Getting Started Concepts The Things Stack Cloud The Things Stack Enterprise Integrations API Hardware
Get The Things Stack

API

    Overview
  • Concepts
  • Reference
    • HTTP(REST)
      • Routes
      • Messages
    • gRPC

Routes

This page contains a full list of all routes supported by The Things Stack HTTP (REST) API, sorted by services.

  • All routes are prepended with /api/v3, except where noted.

  • Set the User-Agent HTTP header containing the name and version of the client. That way, a network operator can help finding out potential issues using the logs.


The Things Stack HTTP (REST) API Reference

Version: 3.34.1

Service Link
Check the access rights for an entity. EntityAccess
Claim and manage batches of end devices on external Join Servers. EndDeviceBatchClaimingServer
Claim and manage end devices on external Join Servers. EndDeviceClaimingServer
Claim gateways and manage claims. GatewayClaimingServer
Configure Ethernet profiles for managed gateways. ManagedGatewayEthernetProfileConfigurationService
Configure managed gateways. ManagedGatewayConfigurationService
Configure WiFi profiles for managed gateways. ManagedGatewayWiFiProfileConfigurationService
Connect a gRPC gateway to a The Things Stack Gateway Server. GtwGs
Connect and manage applications or integrations to an Application Server. AppAs
Convert end device information between supported formats. EndDeviceTemplateConverter
DEPRECATED: Validate contact information of registered entities. ContactInfoRegistry
Fetch configuration for gateways. GatewayConfigurationService
Fetch configuration for The Things Stack Join Server. Js
Generate and parse end device QR codes. EndDeviceQRCodeGenerator
Get information about The Things Stack Identity Server. Is
Get information on LoRaWAN end device brands, models, and templates from the Device Repository. DeviceRepository
Manage access to applications. ApplicationAccess
Manage access to batches of gateways. GatewayBatchAccess
Manage access to gateways. GatewayAccess
Manage access to OAuth clients. ClientAccess
Manage access to organizations OrganizationAccess
Manage access to tenants. TenantAccess
Manage alert notification profiles. AlertNotificationProfileRegistry
Manage alert notification receivers. AlertNotificationReceiverRegistry
Manage an Application Server. As
Manage application activation settings. ApplicationActivationSettingRegistry
Manage application packages and their associations. ApplicationPackageRegistry
Manage application pubsubs. ApplicationPubSubRegistry
Manage application webhooks. ApplicationWebhookRegistry
Manage applications. ApplicationRegistry
Manage batches of end devices on the Application Server. AsEndDeviceBatchRegistry
Manage batches of end devices on The Things Stack Join Server. JsEndDeviceBatchRegistry
Manage batches of end devices on The Things Stack Network Server. NsEndDeviceBatchRegistry
Manage batches of gateways. GatewayBatchRegistry
Manage configuration of LoRaWAN® relay devices. NsRelayConfigurationService
Manage end devices on the Application Server. AsEndDeviceRegistry
Manage end devices on The Things Stack Identity Server in batches. EndDeviceBatchRegistry
Manage end devices on The Things Stack Identity Server. EndDeviceRegistry
Manage end devices on The Things Stack Join Server. JsEndDeviceRegistry
Manage end devices on The Things Stack Network Server. NsEndDeviceRegistry
Manage external authentication providers. AuthenticationProviderRegistry
Manage external users (users linked to external identity providers). ExternalUserRegistry
Manage gateways. GatewayRegistry
Manage labels. LabelRegistry
Manage MAC settings profiles on The Things Stack Network Server. NsMACSettingsProfileRegistry
Manage OAuth client authorizations for users. OAuthAuthorizationRegistry
Manage OAuth client registrations. ClientRegistry
Manage organizations. OrganizationRegistry
Manage peering via Packet Broker. Pba
Manage tenants as a tenant administrator. TenantRegistry
Manage The Things Stack Alert Routing Server. Ars
Manage The Things Stack Network Server. Ns
Read and manage notifications. NotificationService
The GsNS service connects a Gateway Server to a Network Server. This is an inter-component service and is not intended to be used by end users. GsNs
The GsPba service connects a Gateway Server to a Packet Broker Agent. This is an inter-component service and is not intended to be used by end users. GsPba
The NsPba service connects a Network Server to a Packet Broker Agent. This is an inter-component service and is not intended to be used by end users. NsPba
GatewayQRCodeGenerator
Manage user access. UserAccess
Manage user invitations. UserInvitationRegistry
Manage user sessions. UserSessionRegistry
Manage users. UserRegistry
Query application upstream messages from the storage integration. ApplicationUpStorage
Query historical aggregated insight of gateways, applications and end devices. Noc
Read events served from a The Things Stack cluster. Events
Report metering data to external billing services. Tbs
Retrieve gateway connection statistics. Gs
Retrieve LoRaWAN network configuration options. Configuration
Search for end devices in the End Device Registry. EndDeviceRegistrySearch
Search for entities in the Entity Registry. EntityRegistrySearch
Submit Azure IoT Hub device twin and lifecycle events. AzureIoTHubService
The AppJs service is used by an external AWS integration to connect to a Join Server instance. AppJs
The ApplicationCryptoService supports application layer cryptographic operations. This service is not intended to be used by end users. ApplicationCryptoService
The AsJs service connects an Application Server to a Join Server. This is an inter-component service and is not intended to be used by end users. AsJs
The AsNs service connects an Application Server to a Network Server. This is an inter-component service and is not intended to be used by end users. AsNs
The NetworkCryptoService supports network layer cryptographic operations. This service is not intended to be used by end users. NetworkCryptoService
The NsAs service is used by The Things Stack Network Servers to interact with The Things Stack Application Servers. This is an inter-component service and is not meant for end users. NsAs
The NsGs service connects a Network Server to a Gateway Server. This is an inter-component service and is not intended for end users. NsGs
The NsJs service connects a Network Server to a Join Server. This is an inter-component service and is not intended to be used by end users. NsJs
Validate a user's primary email. EmailValidationRegistry
UserBookmarkRegistry

AlertNotificationReceiverRegistry

Manage alert notification receivers.

Expand Collapse

get

/alerts/notifications/receivers

List existing alert notification receivers.

Expand Collapse

Returns all receivers if no identifiers are provided.

Request Parameters
Field Type Required Description
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "receivers": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "email": {
          "properties": {
            "recipient": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "ids": {
          "properties": {
            "receiver_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "type": "string"
        },
        "sms": {
          "properties": {
            "phone_number": {
              "description": "According to the international phone numbering plan (ITU-T E. 164)\nphone numbers cannot contain less than 7 digits and more than 15 digits.\nThe validation is done via an regex and accounts for the '+' formating character.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "webhook": {
          "properties": {
            "headers": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "url": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/alerts/notifications/receivers

Create a new alert notification receiver.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "receiver": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "email": {
        "properties": {
          "recipient": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ids": {
        "properties": {
          "receiver_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": {
        "type": "string"
      },
      "sms": {
        "properties": {
          "phone_number": {
            "description": "According to the international phone numbering plan (ITU-T E. 164)\nphone numbers cannot contain less than 7 digits and more than 15 digits.\nThe validation is done via an regex and accounts for the '+' formating character.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "webhook": {
        "properties": {
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "url": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "email": {
    "properties": {
      "recipient": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "ids": {
    "properties": {
      "receiver_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "sms": {
    "properties": {
      "phone_number": {
        "description": "According to the international phone numbering plan (ITU-T E. 164)\nphone numbers cannot contain less than 7 digits and more than 15 digits.\nThe validation is done via an regex and accounts for the '+' formating character.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "webhook": {
    "properties": {
      "headers": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "url": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/alerts/notifications/receivers/{ids.receiver_id}

Get an existing alert notification receiver.

Expand Collapse

Request Parameters
Field Type Required Description
ids.receiver_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "email": {
    "properties": {
      "recipient": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "ids": {
    "properties": {
      "receiver_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "sms": {
    "properties": {
      "phone_number": {
        "description": "According to the international phone numbering plan (ITU-T E. 164)\nphone numbers cannot contain less than 7 digits and more than 15 digits.\nThe validation is done via an regex and accounts for the '+' formating character.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "webhook": {
    "properties": {
      "headers": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "url": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/alerts/notifications/receivers/{receiver.ids.receiver_id}

Update an existing alert notification receiver.

Expand Collapse

Request Parameters
Field Type Required Description
receiver.ids.receiver_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "receiver": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "email": {
        "properties": {
          "recipient": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ids": {
        "description": "The identifiers of the receiver. These can be seen by any admin user in the network.",
        "title": "The identifiers of the receiver. These can be seen by any admin user in the network.",
        "type": "object"
      },
      "name": {
        "type": "string"
      },
      "sms": {
        "properties": {
          "phone_number": {
            "description": "According to the international phone numbering plan (ITU-T E. 164)\nphone numbers cannot contain less than 7 digits and more than 15 digits.\nThe validation is done via an regex and accounts for the '+' formating character.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "webhook": {
        "properties": {
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "url": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "email": {
    "properties": {
      "recipient": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "ids": {
    "properties": {
      "receiver_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "sms": {
    "properties": {
      "phone_number": {
        "description": "According to the international phone numbering plan (ITU-T E. 164)\nphone numbers cannot contain less than 7 digits and more than 15 digits.\nThe validation is done via an regex and accounts for the '+' formating character.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "webhook": {
    "properties": {
      "headers": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "url": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/alerts/notifications/receivers/{receiver_id}

Delete an existing alert notification receiver.

Expand Collapse

Request Parameters
Field Type Required Description
receiver_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

AlertNotificationProfileRegistry

Manage alert notification profiles.

Expand Collapse

get

/alerts/notifications/profiles

List existing alert notification profiles.

Expand Collapse

Returns all profiles if no identifiers are provided. If provided, the identifiers are used to filter which profiles are returned.

Request Parameters
Field Type Required Description
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "profiles": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "ids": {
          "properties": {
            "profile_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "is_default": {
          "description": "Whether this profile is the default alert notification profile for the network.",
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "receivers_ids": {
          "description": "List of receivers that will be notified when an alert is triggered for this profile.",
          "items": {
            "properties": {
              "receiver_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/alerts/notifications/profiles

Create a new alert notification profile.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "profile": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "type": "string"
      },
      "ids": {
        "properties": {
          "profile_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "is_default": {
        "description": "Whether this profile is the default alert notification profile for the network.",
        "type": "boolean"
      },
      "name": {
        "type": "string"
      },
      "receivers_ids": {
        "description": "List of receivers that will be notified when an alert is triggered for this profile.",
        "items": {
          "properties": {
            "receiver_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "ids": {
    "properties": {
      "profile_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "is_default": {
    "description": "Whether this profile is the default alert notification profile for the network.",
    "type": "boolean"
  },
  "name": {
    "type": "string"
  },
  "receivers_ids": {
    "description": "List of receivers that will be notified when an alert is triggered for this profile.",
    "items": {
      "properties": {
        "receiver_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/alerts/notifications/profiles/default

Get the default alert notification profile.

Expand Collapse

Request Parameters
Field Type Required Description
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "ids": {
    "properties": {
      "profile_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "is_default": {
    "description": "Whether this profile is the default alert notification profile for the network.",
    "type": "boolean"
  },
  "name": {
    "type": "string"
  },
  "receivers_ids": {
    "description": "List of receivers that will be notified when an alert is triggered for this profile.",
    "items": {
      "properties": {
        "receiver_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/alerts/notifications/profiles/{ids.profile_id}

Get an existing alert notification profile.

Expand Collapse

Request Parameters
Field Type Required Description
ids.profile_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "ids": {
    "properties": {
      "profile_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "is_default": {
    "description": "Whether this profile is the default alert notification profile for the network.",
    "type": "boolean"
  },
  "name": {
    "type": "string"
  },
  "receivers_ids": {
    "description": "List of receivers that will be notified when an alert is triggered for this profile.",
    "items": {
      "properties": {
        "receiver_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/alerts/notifications/profiles/{profile.ids.profile_id}

Update an existing alert notification profile.

Expand Collapse

Request Parameters
Field Type Required Description
profile.ids.profile_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "profile": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "type": "string"
      },
      "ids": {
        "description": "The identifiers of the profile. These are public and can be seen by any authenticated user in the network.",
        "title": "The identifiers of the profile. These are public and can be seen by any authenticated user in the network.",
        "type": "object"
      },
      "is_default": {
        "description": "Whether this profile is the default alert notification profile for the network.",
        "type": "boolean"
      },
      "name": {
        "type": "string"
      },
      "receivers_ids": {
        "description": "List of receivers that will be notified when an alert is triggered for this profile.",
        "items": {
          "properties": {
            "receiver_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "ids": {
    "properties": {
      "profile_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "is_default": {
    "description": "Whether this profile is the default alert notification profile for the network.",
    "type": "boolean"
  },
  "name": {
    "type": "string"
  },
  "receivers_ids": {
    "description": "List of receivers that will be notified when an alert is triggered for this profile.",
    "items": {
      "properties": {
        "receiver_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/alerts/notifications/profiles/{profile_id}

Delete an existing alert notification profile.

Expand Collapse

Request Parameters
Field Type Required Description
profile_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

Ars

Manage The Things Stack Alert Routing Server.

Expand Collapse

get

/ars/configuration

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "configuration": {
    "properties": {
      "routing": {
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

AuthenticationProviderRegistry

Manage external authentication providers.

Expand Collapse

get

/authentication_providers

Expand Collapse

Request Parameters
Field Type Required Description
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "providers": {
    "items": {
      "properties": {
        "allow_registrations": {
          "type": "boolean"
        },
        "allowed_email_domains": {
          "description": "Allowed email domains for this provider.\nIf this field is set, only emails with the specified domains will be allowed to login.\nThe server also skips checking the `email_verified` field of the claims token.\nWe highly recommend admins of such providers to not allow\nusers to change their email addresses with the provider due to lack of verification.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "configuration": {
          "properties": {
            "oidc": {
              "properties": {
                "client_id": {
                  "type": "string"
                },
                "client_secret": {
                  "type": "string"
                },
                "provider_url": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "ids": {
          "properties": {
            "provider_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "type": "string"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/authentication_providers

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "provider": {
    "properties": {
      "allow_registrations": {
        "type": "boolean"
      },
      "allowed_email_domains": {
        "description": "Allowed email domains for this provider.\nIf this field is set, only emails with the specified domains will be allowed to login.\nThe server also skips checking the `email_verified` field of the claims token.\nWe highly recommend admins of such providers to not allow\nusers to change their email addresses with the provider due to lack of verification.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "configuration": {
        "properties": {
          "oidc": {
            "properties": {
              "client_id": {
                "type": "string"
              },
              "client_secret": {
                "type": "string"
              },
              "provider_url": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "ids": {
        "properties": {
          "provider_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": {
        "type": "string"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "allow_registrations": {
    "type": "boolean"
  },
  "allowed_email_domains": {
    "description": "Allowed email domains for this provider.\nIf this field is set, only emails with the specified domains will be allowed to login.\nThe server also skips checking the `email_verified` field of the claims token.\nWe highly recommend admins of such providers to not allow\nusers to change their email addresses with the provider due to lack of verification.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "configuration": {
    "properties": {
      "oidc": {
        "properties": {
          "client_id": {
            "type": "string"
          },
          "client_secret": {
            "type": "string"
          },
          "provider_url": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "ids": {
    "properties": {
      "provider_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/authentication_providers/{ids.provider_id}

Expand Collapse

Request Parameters
Field Type Required Description
ids.provider_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "allow_registrations": {
    "type": "boolean"
  },
  "allowed_email_domains": {
    "description": "Allowed email domains for this provider.\nIf this field is set, only emails with the specified domains will be allowed to login.\nThe server also skips checking the `email_verified` field of the claims token.\nWe highly recommend admins of such providers to not allow\nusers to change their email addresses with the provider due to lack of verification.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "configuration": {
    "properties": {
      "oidc": {
        "properties": {
          "client_id": {
            "type": "string"
          },
          "client_secret": {
            "type": "string"
          },
          "provider_url": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "ids": {
    "properties": {
      "provider_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/authentication_providers/{provider.ids.provider_id}

Expand Collapse

Request Parameters
Field Type Required Description
provider.ids.provider_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "provider": {
    "properties": {
      "allow_registrations": {
        "type": "boolean"
      },
      "allowed_email_domains": {
        "description": "Allowed email domains for this provider.\nIf this field is set, only emails with the specified domains will be allowed to login.\nThe server also skips checking the `email_verified` field of the claims token.\nWe highly recommend admins of such providers to not allow\nusers to change their email addresses with the provider due to lack of verification.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "configuration": {
        "properties": {
          "oidc": {
            "properties": {
              "client_id": {
                "type": "string"
              },
              "client_secret": {
                "type": "string"
              },
              "provider_url": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "ids": {
        "type": "object"
      },
      "name": {
        "type": "string"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "allow_registrations": {
    "type": "boolean"
  },
  "allowed_email_domains": {
    "description": "Allowed email domains for this provider.\nIf this field is set, only emails with the specified domains will be allowed to login.\nThe server also skips checking the `email_verified` field of the claims token.\nWe highly recommend admins of such providers to not allow\nusers to change their email addresses with the provider due to lack of verification.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "configuration": {
    "properties": {
      "oidc": {
        "properties": {
          "client_id": {
            "type": "string"
          },
          "client_secret": {
            "type": "string"
          },
          "provider_url": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "ids": {
    "properties": {
      "provider_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/authentication_providers/{provider_id}

Expand Collapse

Request Parameters
Field Type Required Description
provider_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ExternalUserRegistry

Manage external users (users linked to external identity providers).

Expand Collapse

post

/authentication_providers/{external_user.provider_ids.provider_id}/external_users

Expand Collapse

Request Parameters
Field Type Required Description
external_user.provider_ids.provider_id string true
Request Body
Show JSON Schema
{
  "external_user": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "external_id": {
        "type": "string"
      },
      "provider_ids": {
        "type": "object"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "external_id": {
    "type": "string"
  },
  "provider_ids": {
    "properties": {
      "provider_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "user_ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      },
      "user_id": {
        "description": "This ID shares namespace with organization IDs.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/authentication_providers/{provider_ids.provider_id}/external_users/{external_id}

Expand Collapse

Request Parameters
Field Type Required Description
provider_ids.provider_id string true
external_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/authentication_providers/{provider_ids.provider_id}/external_users/{external_id}

Expand Collapse

Request Parameters
Field Type Required Description
provider_ids.provider_id string true
external_id string true
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "external_id": {
    "type": "string"
  },
  "provider_ids": {
    "properties": {
      "provider_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "user_ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      },
      "user_id": {
        "description": "This ID shares namespace with organization IDs.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/authentication_providers/{provider_ids.provider_id}/users/{user_ids.user_id}

Expand Collapse

Request Parameters
Field Type Required Description
provider_ids.provider_id string true
user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "external_id": {
    "type": "string"
  },
  "provider_ids": {
    "properties": {
      "provider_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "user_ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      },
      "user_id": {
        "description": "This ID shares namespace with organization IDs.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

LabelRegistry

Manage labels.

Expand Collapse

get

/labels

List the labels.

Expand Collapse

Request Parameters
Field Type Required Description
field_mask string
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order string Order the results by this field path. Default ordering is by ID. Prepend with a minus (-) to reverse the order.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "labels": {
    "items": {
      "properties": {
        "color": {
          "type": "string"
        },
        "created_at": {
          "description": "When the label was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "entities": {
          "description": "EXPERIMENTAL: These definitions are subject to change.",
          "properties": {
            "applications": {
              "items": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "clients": {
              "items": {
                "properties": {
                  "client_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "end_devices": {
              "items": {
                "properties": {
                  "application_ids": {
                    "properties": {
                      "application_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dev_addr": {
                    "description": "The LoRaWAN DevAddr.",
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "dev_eui": {
                    "description": "The LoRaWAN DevEUI.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "device_id": {
                    "type": "string"
                  },
                  "join_eui": {
                    "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "gateways": {
              "items": {
                "properties": {
                  "eui": {
                    "description": "Secondary identifier, which can only be used in specific requests.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "gateway_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "ids": {
          "properties": {
            "label_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "type": "string"
        },
        "updated_at": {
          "description": "When the label was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/labels

Create a label.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "label": {
    "properties": {
      "color": {
        "type": "string"
      },
      "created_at": {
        "description": "When the label was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "type": "string"
      },
      "entities": {
        "description": "EXPERIMENTAL: These definitions are subject to change.",
        "properties": {
          "applications": {
            "items": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "clients": {
            "items": {
              "properties": {
                "client_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "end_devices": {
            "items": {
              "properties": {
                "application_ids": {
                  "properties": {
                    "application_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dev_addr": {
                  "description": "The LoRaWAN DevAddr.",
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "dev_eui": {
                  "description": "The LoRaWAN DevEUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "join_eui": {
                  "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "gateways": {
            "items": {
              "properties": {
                "eui": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "gateway_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ids": {
        "properties": {
          "label_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": {
        "type": "string"
      },
      "updated_at": {
        "description": "When the label was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "color": {
    "type": "string"
  },
  "created_at": {
    "description": "When the label was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "entities": {
    "description": "EXPERIMENTAL: These definitions are subject to change.",
    "properties": {
      "applications": {
        "items": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "clients": {
        "items": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "end_devices": {
        "items": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "gateways": {
        "items": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "ids": {
    "properties": {
      "label_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "updated_at": {
    "description": "When the label was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/labels/{label.ids.label_id}

Update a label.

Expand Collapse

This does not handle the association of Label and entities.

Request Parameters
Field Type Required Description
label.ids.label_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "label": {
    "properties": {
      "color": {
        "type": "string"
      },
      "created_at": {
        "description": "When the label was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "type": "string"
      },
      "entities": {
        "description": "EXPERIMENTAL: These definitions are subject to change.",
        "properties": {
          "applications": {
            "items": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "clients": {
            "items": {
              "properties": {
                "client_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "end_devices": {
            "items": {
              "properties": {
                "application_ids": {
                  "properties": {
                    "application_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dev_addr": {
                  "description": "The LoRaWAN DevAddr.",
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "dev_eui": {
                  "description": "The LoRaWAN DevEUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "join_eui": {
                  "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "gateways": {
            "items": {
              "properties": {
                "eui": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "gateway_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ids": {
        "type": "object"
      },
      "name": {
        "type": "string"
      },
      "updated_at": {
        "description": "When the label was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "color": {
    "type": "string"
  },
  "created_at": {
    "description": "When the label was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "entities": {
    "description": "EXPERIMENTAL: These definitions are subject to change.",
    "properties": {
      "applications": {
        "items": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "clients": {
        "items": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "end_devices": {
        "items": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "gateways": {
        "items": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "ids": {
    "properties": {
      "label_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "updated_at": {
    "description": "When the label was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/labels/{label_ids.label_id}

Delete the given label.

Expand Collapse

Request Parameters
Field Type Required Description
label_ids.label_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/labels/{label_ids.label_id}

Get a label.

Expand Collapse

Request Parameters
Field Type Required Description
label_ids.label_id string true
field_mask string The names of the label fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "color": {
    "type": "string"
  },
  "created_at": {
    "description": "When the label was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "entities": {
    "description": "EXPERIMENTAL: These definitions are subject to change.",
    "properties": {
      "applications": {
        "items": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "clients": {
        "items": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "end_devices": {
        "items": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "gateways": {
        "items": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "ids": {
    "properties": {
      "label_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "updated_at": {
    "description": "When the label was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

Noc

Query historical aggregated insight of gateways, applications and end devices.

Expand Collapse

post

/noc/application/{application_ids.application_id}/channels/lora-performance

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "channels": {
    "items": {
      "description": "LoRa performance per channel.",
      "properties": {
        "agg_lora_rssi": {
          "additionalProperties": {
            "format": "float",
            "type": "number"
          },
          "description": "Aggregated observed LoRa RSSI (channel RSSI adjusted for SNR) per frequency (Hz).",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/channels/packet-count

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "channels": {
    "items": {
      "description": "Packet count per channel.",
      "properties": {
        "count": {
          "additionalProperties": {
            "format": "uint64",
            "type": "string"
          },
          "description": "Packet counts per frequency (Hz).",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/channels/utilization

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "channels": {
    "items": {
      "description": "Utilization per channel.",
      "properties": {
        "time": {
          "format": "date-time",
          "type": "string"
        },
        "utilization": {
          "additionalProperties": {
            "format": "float",
            "type": "number"
          },
          "description": "Utilization (fraction of time) per frequency (Hz) that the channel is in use.",
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/data_rates/packet-count

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "data_rates": {
    "items": {
      "properties": {
        "count": {
          "additionalProperties": {
            "format": "uint64",
            "type": "string"
          },
          "description": "Packet counts per data rate.",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/end_devices/active-metrics

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_window": {
    "description": "Request for data in a specific time window.",
    "properties": {
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_device_ids": {
    "items": {
      "properties": {
        "application_ids": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "dev_addr": {
          "description": "The LoRaWAN DevAddr.",
          "example": "2600ABCD",
          "format": "string",
          "type": "string"
        },
        "dev_eui": {
          "description": "The LoRaWAN DevEUI.",
          "example": "70B3D57ED000ABCD",
          "format": "string",
          "type": "string"
        },
        "device_id": {
          "type": "string"
        },
        "join_eui": {
          "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
          "example": "70B3D57ED000ABCD",
          "format": "string",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/events/forward

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "event_forward_count": {
    "items": {
      "properties": {
        "count": {
          "additionalProperties": {
            "format": "uint64",
            "type": "string"
          },
          "description": "Application Server forwarded events count per event name.",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/events/webhook/failure

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "webhook_failure": {
    "items": {
      "properties": {
        "time": {
          "format": "date-time",
          "type": "string"
        },
        "total": {
          "format": "uint64",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/events/webhook/failure/ratio

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_window": {
    "description": "Request for data in a specific time window.",
    "properties": {
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "webhook_failure_to_forward_ratio": {
    "format": "float",
    "type": "number"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/events/webhook/failure/top-five

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "counts": {
    "items": {
      "properties": {
        "time": {
          "format": "date-time",
          "type": "string"
        },
        "totals": {
          "additionalProperties": {
            "format": "uint64",
            "type": "string"
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/gateways

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_window": {
    "description": "Request for data in a specific time window.",
    "properties": {
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "gateways": {
    "items": {
      "properties": {
        "best_channel_rssi": {
          "format": "float",
          "type": "number"
        },
        "gateway_id": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "packet_count": {
          "format": "uint64",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/application/{application_ids.application_id}/statistics

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "time_window": {
    "description": "Request for data in a specific time window.",
    "properties": {
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "stats": {
    "items": {
      "description": "Application end devices statistic.",
      "properties": {
        "best_channel_rssi": {
          "format": "float",
          "type": "number"
        },
        "best_gateway_ids": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "end_device_ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "last_packet_error_rate": {
          "format": "float",
          "type": "number"
        },
        "last_seen": {
          "format": "date-time",
          "type": "string"
        },
        "packet_count": {
          "format": "uint64",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/applications/active

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "bucket_interval": {
    "type": "string"
  },
  "from": {
    "format": "date-time",
    "type": "string"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  },
  "to": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "daily_buckets": {
    "items": {
      "description": "Number of entities connected in a time bucket.",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "hourly_buckets": {
    "items": {
      "description": "Number of entities connected in a time bucket.",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "weekly_buckets": {
    "items": {
      "description": "Number of entities connected in a time bucket.",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/applications/active-metrics

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "from": {
    "format": "date-time",
    "type": "string"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  },
  "to": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "application_ids": {
    "items": {
      "properties": {
        "application_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/applications/statistics

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "from": {
    "format": "date-time",
    "type": "string"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  },
  "to": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "stats": {
    "items": {
      "description": "Applications statistic.",
      "properties": {
        "active_devices": {
          "format": "int64",
          "type": "integer"
        },
        "application_ids": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "average_packet_error_rate": {
          "format": "float",
          "type": "number"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/noc/configuration

Get the configuration of the Network Operations Center.

Expand Collapse

The response is typically used to enable or disable features in a user interface.

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "configuration": {
    "properties": {
      "access": {
        "properties": {
          "extended": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/channels/lora-performance

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "channels": {
    "items": {
      "description": "LoRa performance per channel.",
      "properties": {
        "agg_lora_rssi": {
          "additionalProperties": {
            "format": "float",
            "type": "number"
          },
          "description": "Aggregated observed LoRa RSSI (channel RSSI adjusted for SNR) per frequency (Hz).",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/channels/packet-count

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "channels": {
    "items": {
      "description": "Packet count per channel.",
      "properties": {
        "count": {
          "additionalProperties": {
            "format": "uint64",
            "type": "string"
          },
          "description": "Packet counts per frequency (Hz).",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/channels/utilization

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "channels": {
    "items": {
      "description": "Utilization per channel.",
      "properties": {
        "time": {
          "format": "date-time",
          "type": "string"
        },
        "utilization": {
          "additionalProperties": {
            "format": "float",
            "type": "number"
          },
          "description": "Utilization (fraction of time) per frequency (Hz) that the channel is in use.",
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/data_rates/packet-count

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "data_rates": {
    "items": {
      "properties": {
        "count": {
          "additionalProperties": {
            "format": "uint64",
            "type": "string"
          },
          "description": "Packet counts per data rate.",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/last-seen

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/packet-error-rate

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "packet_error_rates": {
    "items": {
      "properties": {
        "packet_error_rate": {
          "format": "float",
          "type": "number"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_device/{end_device_ids.application_ids.application_id}/{end_device_ids.device_id}/session-start

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_devices/active

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "bucket_interval": {
    "type": "string"
  },
  "from": {
    "format": "date-time",
    "type": "string"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  },
  "to": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "daily_buckets": {
    "items": {
      "description": "Number of entities connected in a time bucket.",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "hourly_buckets": {
    "items": {
      "description": "Number of entities connected in a time bucket.",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "weekly_buckets": {
    "items": {
      "description": "Number of entities connected in a time bucket.",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_devices/active-metrics

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "from": {
    "format": "date-time",
    "type": "string"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  },
  "to": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_device_ids": {
    "items": {
      "properties": {
        "application_ids": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "dev_addr": {
          "description": "The LoRaWAN DevAddr.",
          "example": "2600ABCD",
          "format": "string",
          "type": "string"
        },
        "dev_eui": {
          "description": "The LoRaWAN DevEUI.",
          "example": "70B3D57ED000ABCD",
          "format": "string",
          "type": "string"
        },
        "device_id": {
          "type": "string"
        },
        "join_eui": {
          "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
          "example": "70B3D57ED000ABCD",
          "format": "string",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/end_devices/statistics

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "from": {
    "format": "date-time",
    "type": "string"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  },
  "to": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "stats": {
    "items": {
      "description": "End devices statistic.",
      "properties": {
        "application_ids": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "end_device_ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "last_packet_error_rate": {
          "format": "float",
          "type": "number"
        },
        "last_seen": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateway/{gateway_ids.gateway_id}/channels/lora-performance

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "channels": {
    "items": {
      "description": "LoRa performance per channel.",
      "properties": {
        "agg_lora_rssi": {
          "additionalProperties": {
            "format": "float",
            "type": "number"
          },
          "description": "Aggregated observed LoRa RSSI (channel RSSI adjusted for SNR) per frequency (Hz).",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateway/{gateway_ids.gateway_id}/channels/packet-count

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "channels": {
    "items": {
      "description": "Packet count per channel.",
      "properties": {
        "count": {
          "additionalProperties": {
            "format": "uint64",
            "type": "string"
          },
          "description": "Packet counts per frequency (Hz).",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateway/{gateway_ids.gateway_id}/channels/utilization

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "channels": {
    "items": {
      "description": "Utilization per channel.",
      "properties": {
        "time": {
          "format": "date-time",
          "type": "string"
        },
        "utilization": {
          "additionalProperties": {
            "format": "float",
            "type": "number"
          },
          "description": "Utilization (fraction of time) per frequency (Hz) that the channel is in use.",
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateway/{gateway_ids.gateway_id}/data_rates/packet-count

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "data_rates": {
    "items": {
      "properties": {
        "count": {
          "additionalProperties": {
            "format": "uint64",
            "type": "string"
          },
          "description": "Packet counts per data rate.",
          "type": "object"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateway/{gateway_ids.gateway_id}/rtt

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "stats": {
    "items": {
      "description": "Gateway RTT statistic.",
      "properties": {
        "max": {
          "type": "string"
        },
        "median": {
          "type": "string"
        },
        "min": {
          "type": "string"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateway/{gateway_ids.gateway_id}/traffic

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_bucket": {
    "description": "Request for data using aggregates by time buckets with a specified interval.",
    "properties": {
      "bucket_interval": {
        "type": "string"
      },
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "downlink": {
    "items": {
      "properties": {
        "rate": {
          "format": "float",
          "type": "number"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "uplink": {
    "items": {
      "properties": {
        "rate": {
          "format": "float",
          "type": "number"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateway/{gateway_ids.gateway_id}/uptime

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "time_window": {
    "description": "Request for data in a specific time window.",
    "properties": {
      "from": {
        "format": "date-time",
        "type": "string"
      },
      "limit": {
        "description": "Limit the number of results per page.",
        "format": "int64",
        "type": "integer"
      },
      "page": {
        "description": "Page number for pagination. 0 is interpreted as 1.",
        "format": "int64",
        "type": "integer"
      },
      "to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateway/{gateway_time_window.gateway_ids.gateway_id}/connection-events

Expand Collapse

Request Parameters
Field Type Required Description
gateway_time_window.gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "event_type": {
    "properties": {
      "value": {
        "default": "GATEWAY_CONNECTION_EVENT_TYPE_CONNECT",
        "description": "Gateway connection event type.\n\n - GATEWAY_CONNECTION_EVENT_TYPE_CONNECT: The gateway connects.\n - GATEWAY_CONNECTION_EVENT_TYPE_DISCONNECT: The gateway disconnects.\n - GATEWAY_CONNECTION_EVENT_TYPE_STATS: The gateway connection statistics are updated.",
        "enum": [
          "GATEWAY_CONNECTION_EVENT_TYPE_CONNECT",
          "GATEWAY_CONNECTION_EVENT_TYPE_DISCONNECT",
          "GATEWAY_CONNECTION_EVENT_TYPE_STATS"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "gateway_time_window": {
    "description": "Request for gateway data in a specific time window.",
    "properties": {
      "gateway_ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "time_window": {
        "description": "Request for data in a specific time window.",
        "properties": {
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "limit": {
            "description": "Limit the number of results per page.",
            "format": "int64",
            "type": "integer"
          },
          "page": {
            "description": "Page number for pagination. 0 is interpreted as 1.",
            "format": "int64",
            "type": "integer"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "events": {
    "items": {
      "description": "Gateway connection event.",
      "properties": {
        "event_type": {
          "default": "GATEWAY_CONNECTION_EVENT_TYPE_CONNECT",
          "description": "Gateway connection event type.\n\n - GATEWAY_CONNECTION_EVENT_TYPE_CONNECT: The gateway connects.\n - GATEWAY_CONNECTION_EVENT_TYPE_DISCONNECT: The gateway disconnects.\n - GATEWAY_CONNECTION_EVENT_TYPE_STATS: The gateway connection statistics are updated.",
          "enum": [
            "GATEWAY_CONNECTION_EVENT_TYPE_CONNECT",
            "GATEWAY_CONNECTION_EVENT_TYPE_DISCONNECT",
            "GATEWAY_CONNECTION_EVENT_TYPE_STATS"
          ],
          "type": "string"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateway/{gateway_time_window.gateway_ids.gateway_id}/networks-seen/top/{top}

Expand Collapse

Request Parameters
Field Type Required Description
gateway_time_window.gateway_ids.gateway_id string true
top integer true Top number of networks to include.
Request Body
Show JSON Schema
{
  "gateway_time_window": {
    "description": "Request for gateway data in a specific time window.",
    "properties": {
      "gateway_ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "time_window": {
        "description": "Request for data in a specific time window.",
        "properties": {
          "from": {
            "format": "date-time",
            "type": "string"
          },
          "limit": {
            "description": "Limit the number of results per page.",
            "format": "int64",
            "type": "integer"
          },
          "page": {
            "description": "Page number for pagination. 0 is interpreted as 1.",
            "format": "int64",
            "type": "integer"
          },
          "to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "networks": {
    "additionalProperties": {
      "format": "float",
      "type": "number"
    },
    "description": "Proportion of network by name. The proportions are a fraction of 1. The remaining number is the rest total.",
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateways/active-metrics

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "from": {
    "format": "date-time",
    "type": "string"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  },
  "to": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "gateway_ids": {
    "items": {
      "properties": {
        "eui": {
          "description": "Secondary identifier, which can only be used in specific requests.",
          "example": "70B3D57ED000ABCD",
          "format": "string",
          "type": "string"
        },
        "gateway_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateways/connected

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "bucket_interval": {
    "type": "string"
  },
  "from": {
    "format": "date-time",
    "type": "string"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  },
  "to": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "daily_buckets": {
    "items": {
      "description": "Number of entities connected in a time bucket.",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "hourly_buckets": {
    "items": {
      "description": "Number of entities connected in a time bucket.",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "weekly_buckets": {
    "items": {
      "description": "Number of entities connected in a time bucket.",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "time": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/noc/gateways/connectivity

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "from": {
    "format": "date-time",
    "type": "string"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  },
  "to": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "gateways": {
    "items": {
      "description": "Connectivity times of a gateway.",
      "properties": {
        "disconnects": {
          "description": "Number of disconnects.",
          "format": "uint64",
          "type": "string"
        },
        "gateway_ids": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "last_connect": {
          "format": "date-time",
          "type": "string"
        },
        "last_disconnect": {
          "format": "date-time",
          "type": "string"
        },
        "packet_rate_last_hour": {
          "description": "Packet rate (uplink and downlink) of the last hour.",
          "format": "float",
          "type": "number"
        },
        "uptime": {
          "description": "Fraction of time that the gateway was active.\nThis is typically aggregated in time buckets of at least 5 minutes or 1 hour depending on the query window.",
          "format": "float",
          "type": "number"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/noc/health

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EntityRegistrySearch

Search for entities in the Entity Registry.

Expand Collapse

get

/applications/{application_ids.application_id}/collaborators/search

Search for accounts that match the conditions specified in the request.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
query string
only_users boolean
client_ids.client_id string
gateway_ids.gateway_id string
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
organization_ids.organization_id string This ID shares namespace with user IDs.
complement_collaborators boolean
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "account_ids": {
    "items": {
      "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
      "properties": {
        "organization_ids": {
          "properties": {
            "organization_id": {
              "description": "This ID shares namespace with user IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/clients/{client_ids.client_id}/collaborators/search

Search for accounts that match the conditions specified in the request.

Expand Collapse

Request Parameters
Field Type Required Description
client_ids.client_id string true
query string
only_users boolean
application_ids.application_id string
gateway_ids.gateway_id string
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
organization_ids.organization_id string This ID shares namespace with user IDs.
complement_collaborators boolean
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "account_ids": {
    "items": {
      "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
      "properties": {
        "organization_ids": {
          "properties": {
            "organization_id": {
              "description": "This ID shares namespace with user IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gateways/{gateway_ids.gateway_id}/collaborators/search

Search for accounts that match the conditions specified in the request.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
query string
only_users boolean
application_ids.application_id string
client_ids.client_id string
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
organization_ids.organization_id string This ID shares namespace with user IDs.
complement_collaborators boolean
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "account_ids": {
    "items": {
      "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
      "properties": {
        "organization_ids": {
          "properties": {
            "organization_id": {
              "description": "This ID shares namespace with user IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/organizations/{organization_ids.organization_id}/collaborators/search

Search for accounts that match the conditions specified in the request.

Expand Collapse

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
query string
only_users boolean
application_ids.application_id string
client_ids.client_id string
gateway_ids.gateway_id string
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
complement_collaborators boolean
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "account_ids": {
    "items": {
      "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
      "properties": {
        "organization_ids": {
          "properties": {
            "organization_id": {
              "description": "This ID shares namespace with user IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/search/accounts

Search for accounts that match the conditions specified in the request.

Expand Collapse

Request Parameters
Field Type Required Description
query string
only_users boolean
application_ids.application_id string
client_ids.client_id string
gateway_ids.gateway_id string
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
organization_ids.organization_id string This ID shares namespace with user IDs.
complement_collaborators boolean
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "account_ids": {
    "items": {
      "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
      "properties": {
        "organization_ids": {
          "properties": {
            "organization_id": {
              "description": "This ID shares namespace with user IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/search/applications

Search for applications that match the conditions specified in the request.

Expand Collapse

Non-admin users will only match applications that they have rights on.

Request Parameters
Field Type Required Description
query string Find applications where the ID, name or description contains this substring.
id_contains string Find applications where the ID contains this substring.
name_contains string Find applications where the name contains this substring.
description_contains string Find applications where the description contains this substring.
attributes_contain[string] string This is a request variable of the map type. The query format is "map_name[key]=value", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age["bob"]=18
label_id_contains array Find applications where one of the label_ids contains this substring.
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted applications.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "applications": {
    "items": {
      "description": "Application is the message that defines an Application in the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "application_server_address": {
          "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the application.",
          "type": "string"
        },
        "dev_eui_counter": {
          "format": "int64",
          "type": "integer"
        },
        "end_device_limit": {
          "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "ids": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_server_address": {
          "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "The name of the application.",
          "type": "string"
        },
        "network_server_address": {
          "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/search/clients

Search for OAuth clients that match the conditions specified in the request.

Expand Collapse

Non-admin users will only match OAuth clients that they have rights on.

Request Parameters
Field Type Required Description
query string Find OAuth clients where the ID, name or description contains this substring.
id_contains string Find OAuth clients where the ID contains this substring.
name_contains string Find OAuth clients where the name contains this substring.
description_contains string Find OAuth clients where the description contains this substring.
attributes_contain[string] string This is a request variable of the map type. The query format is "map_name[key]=value", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age["bob"]=18
label_id_contains array Find OAuth clients where one of the label_ids contains this substring.
state array Find OAuth clients where the state is any of these states. - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin. - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin. - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin. - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin. - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted OAuth clients.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "clients": {
    "items": {
      "description": "An OAuth client on the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "endorsed": {
          "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
          "type": "boolean"
        },
        "grants": {
          "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
          "items": {
            "default": "GRANT_AUTHORIZATION_CODE",
            "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
            "enum": [
              "GRANT_AUTHORIZATION_CODE",
              "GRANT_PASSWORD",
              "GRANT_REFRESH_TOKEN"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "ids": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "logout_redirect_uris": {
          "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "redirect_uris": {
          "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "rights": {
          "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "secret": {
          "description": "The client secret is only visible to collaborators of the client.",
          "type": "string"
        },
        "skip_authorization": {
          "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
          "type": "boolean"
        },
        "state": {
          "default": "STATE_REQUESTED",
          "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
          "enum": [
            "STATE_REQUESTED",
            "STATE_APPROVED",
            "STATE_REJECTED",
            "STATE_FLAGGED",
            "STATE_SUSPENDED"
          ],
          "type": "string"
        },
        "state_description": {
          "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/search/gateways

Search for gateways that match the conditions specified in the request.

Expand Collapse

Non-admin users will only match gateways that they have rights on.

Request Parameters
Field Type Required Description
query string Find gateways where the ID, name, description or EUI contains this substring.
id_contains string Find gateways where the ID contains this substring.
name_contains string Find gateways where the name contains this substring.
description_contains string Find gateways where the description contains this substring.
attributes_contain[string] string This is a request variable of the map type. The query format is "map_name[key]=value", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age["bob"]=18
label_id_contains array Find gateways where one of the label_ids contains this substring.
eui_contains string Find gateways where the (hexadecimal) EUI contains this substring.
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted gateways.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "gateways": {
    "items": {
      "description": "Gateway is the message that defines a gateway on the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "alert_notification_profile_ids": {
          "properties": {
            "profile_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "antennas": {
          "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
          "items": {
            "description": "GatewayAntenna is the message that defines a gateway antenna.",
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "gain": {
                "description": "Antenna gain relative to the gateway, in dBi.",
                "format": "float",
                "type": "number"
              },
              "location": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "placement": {
                "default": "PLACEMENT_UNKNOWN",
                "enum": [
                  "PLACEMENT_UNKNOWN",
                  "INDOOR",
                  "OUTDOOR"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
          "type": "object"
        },
        "auto_update": {
          "type": "boolean"
        },
        "claim_authentication_code": {
          "description": "Authentication code for claiming gateways.",
          "properties": {
            "secret": {
              "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
              "properties": {
                "key_id": {
                  "description": "ID of the Key used to encrypt the secret.",
                  "type": "string"
                },
                "value": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "valid_from": {
              "format": "date-time",
              "type": "string"
            },
            "valid_to": {
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "disable_packet_broker_forwarding": {
          "type": "boolean"
        },
        "downlink_path_constraint": {
          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
          "enum": [
            "DOWNLINK_PATH_CONSTRAINT_NONE",
            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
            "DOWNLINK_PATH_CONSTRAINT_NEVER"
          ],
          "type": "string"
        },
        "enforce_duty_cycle": {
          "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
          "type": "boolean"
        },
        "frequency_plan_id": {
          "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
          "type": "string"
        },
        "frequency_plan_ids": {
          "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "gateway_server_address": {
          "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "title": "next: 34",
          "type": "array"
        },
        "lbs_lns_secret": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "location_public": {
          "description": "The location of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "lrfhss": {
          "description": "LR-FHSS gateway capabilities.",
          "properties": {
            "supported": {
              "description": "The gateway supports the LR-FHSS uplink channels.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "require_authenticated_connection": {
          "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
          "type": "boolean"
        },
        "schedule_anytime_delay": {
          "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
          "type": "string"
        },
        "schedule_downlink_late": {
          "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
          "type": "boolean"
        },
        "status_public": {
          "description": "The status of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "target_cups_key": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "target_cups_uri": {
          "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "update_channel": {
          "type": "string"
        },
        "update_location_from_status": {
          "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
          "type": "boolean"
        },
        "updated_at": {
          "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            },
            "runtime_version": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/search/labels

Expand Collapse

Request Parameters
Field Type Required Description
id_contains string Find labels where the ID contains this substring.
name_contains string Find labels where the name contains this substring.
description_contains string Find labels where the description contains this substring.
field_mask string
order string Order the results by this field path. Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "labels": {
    "items": {
      "properties": {
        "color": {
          "type": "string"
        },
        "created_at": {
          "description": "When the label was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "entities": {
          "description": "EXPERIMENTAL: These definitions are subject to change.",
          "properties": {
            "applications": {
              "items": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "clients": {
              "items": {
                "properties": {
                  "client_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "end_devices": {
              "items": {
                "properties": {
                  "application_ids": {
                    "properties": {
                      "application_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dev_addr": {
                    "description": "The LoRaWAN DevAddr.",
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "dev_eui": {
                    "description": "The LoRaWAN DevEUI.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "device_id": {
                    "type": "string"
                  },
                  "join_eui": {
                    "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "gateways": {
              "items": {
                "properties": {
                  "eui": {
                    "description": "Secondary identifier, which can only be used in specific requests.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "gateway_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "ids": {
          "properties": {
            "label_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "type": "string"
        },
        "updated_at": {
          "description": "When the label was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/search/organizations

Search for organizations that match the conditions specified in the request.

Expand Collapse

Non-admin users will only match organizations that they have rights on.

Request Parameters
Field Type Required Description
query string Find organizations where the ID, name or description contains this substring.
id_contains string Find organizations where the ID contains this substring.
name_contains string Find organizations where the name contains this substring.
description_contains string Find organizations where the description contains this substring.
attributes_contain[string] string This is a request variable of the map type. The query format is "map_name[key]=value", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age["bob"]=18
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted organizations.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "organizations": {
    "items": {
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "application_limit": {
          "description": "The maximum number of applications of the organization.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this organization. Typically used for organizing organizations or for storing integration-specific data.",
          "type": "object"
        },
        "client_limit": {
          "description": "The maximum number of clients of the organization.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "contact_info": {
          "description": "Contact information for this organization. Typically used to indicate who to contact with security/billing questions about the organization.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the organization was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the organization was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the organization.",
          "type": "string"
        },
        "fanout_notifications": {
          "description": "Determines if a notification will be sent to the collaborators. If false it, notifications will be sent only to the\nadministrative or technical contact.",
          "type": "boolean"
        },
        "gateway_limit": {
          "description": "The maximum number of gateways of the organization.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "ids": {
          "properties": {
            "organization_id": {
              "description": "This ID shares namespace with user IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the organization. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the organization was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/search/tenants

Expand Collapse

Request Parameters
Field Type Required Description
id_contains string Find tenants where the ID contains this substring.
name_contains string Find tenants where the name contains this substring.
description_contains string Find tenants where the description contains this substring.
attributes_contain[string] string This is a request variable of the map type. The query format is "map_name[key]=value", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age["bob"]=18
state array Find tenants where the state is any of these states. - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin. - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin. - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin. - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin. - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted tenants.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "tenants": {
    "items": {
      "description": "Tenant is the message that defines a Tenant in the network.",
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "billing": {
          "properties": {
            "aws_saas_marketplace": {
              "properties": {
                "customer_identifier": {
                  "type": "string"
                },
                "product_code": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "counting": {
              "properties": {
                "end_devices": {
                  "default": "ALL",
                  "enum": [
                    "ALL",
                    "ONLY_ACTIVATED"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "stripe": {
              "properties": {
                "customer_id": {
                  "type": "string"
                },
                "plan_id": {
                  "type": "string"
                },
                "subscription_id": {
                  "type": "string"
                },
                "subscription_item_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "billing_identifiers": {
          "properties": {
            "billing_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "capabilities": {
          "type": "object"
        },
        "configuration": {
          "properties": {
            "clusters": {
              "additionalProperties": {
                "properties": {
                  "ars": {
                    "properties": {
                      "routing": {
                        "properties": {
                          "enabled": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "as": {
                    "properties": {
                      "webhooks": {
                        "properties": {
                          "queue": {
                            "properties": {
                              "enabled": {
                                "type": "boolean"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "gs": {
                    "properties": {
                      "mtls_authentication": {
                        "properties": {
                          "client_ca_pool": {
                            "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "is": {
                    "properties": {
                      "admin_rights": {
                        "properties": {
                          "all": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "application_limits": {
                        "properties": {
                          "end_devices": {
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "email": {
                        "properties": {
                          "network": {
                            "properties": {
                              "branding_base_url": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_picture": {
                        "properties": {
                          "disable_upload": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "organization_limits": {
                        "properties": {
                          "applications": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "clients": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "gateways": {
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "profile_picture": {
                        "properties": {
                          "disable_upload": {
                            "type": "boolean"
                          },
                          "use_gravatar": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "user_limits": {
                        "properties": {
                          "applications": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "clients": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "gateways": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "organizations": {
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "user_login": {
                        "properties": {
                          "disable_credentials_login": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "user_registration": {
                        "properties": {
                          "admin_approval": {
                            "properties": {
                              "required": {
                                "type": "boolean"
                              }
                            },
                            "type": "object"
                          },
                          "contact_info_validation": {
                            "properties": {
                              "required": {
                                "type": "boolean"
                              }
                            },
                            "type": "object"
                          },
                          "enabled": {
                            "type": "boolean"
                          },
                          "invitation": {
                            "properties": {
                              "required": {
                                "type": "boolean"
                              },
                              "token_ttl": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "password_requirements": {
                            "properties": {
                              "max_length": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_digits": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_length": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_special": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_uppercase": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "user_rights": {
                        "properties": {
                          "create_applications": {
                            "type": "boolean"
                          },
                          "create_clients": {
                            "type": "boolean"
                          },
                          "create_gateways": {
                            "type": "boolean"
                          },
                          "create_organizations": {
                            "type": "boolean"
                          },
                          "update_name": {
                            "type": "boolean"
                          },
                          "update_primary_email_address": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "js": {
                    "properties": {
                      "join_eui_prefixes": {
                        "example": [
                          "70B3D57ED0000000/56"
                        ],
                        "items": {
                          "format": "byte",
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "noc": {
                    "properties": {
                      "access": {
                        "properties": {
                          "extended": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "ns": {
                    "properties": {
                      "cooldown_window": {
                        "type": "string"
                      },
                      "deduplication_window": {
                        "type": "string"
                      },
                      "dev_addr_prefixes": {
                        "example": [
                          "2600AB00/24"
                        ],
                        "items": {
                          "format": "byte",
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "net_id": {
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ui": {
                    "properties": {
                      "branding_base_url": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "description": "Configuration per cluster (by ID).",
              "type": "object"
            },
            "default_cluster": {
              "properties": {
                "ars": {
                  "properties": {
                    "routing": {
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "as": {
                  "properties": {
                    "webhooks": {
                      "properties": {
                        "queue": {
                          "properties": {
                            "enabled": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "gs": {
                  "properties": {
                    "mtls_authentication": {
                      "properties": {
                        "client_ca_pool": {
                          "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "is": {
                  "properties": {
                    "admin_rights": {
                      "properties": {
                        "all": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "application_limits": {
                      "properties": {
                        "end_devices": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "email": {
                      "properties": {
                        "network": {
                          "properties": {
                            "branding_base_url": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_picture": {
                      "properties": {
                        "disable_upload": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "organization_limits": {
                      "properties": {
                        "applications": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "clients": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "gateways": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "profile_picture": {
                      "properties": {
                        "disable_upload": {
                          "type": "boolean"
                        },
                        "use_gravatar": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "user_limits": {
                      "properties": {
                        "applications": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "clients": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "gateways": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "organizations": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "user_login": {
                      "properties": {
                        "disable_credentials_login": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "user_registration": {
                      "properties": {
                        "admin_approval": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "contact_info_validation": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "enabled": {
                          "type": "boolean"
                        },
                        "invitation": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            },
                            "token_ttl": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "password_requirements": {
                          "properties": {
                            "max_length": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_digits": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_length": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_special": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_uppercase": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "user_rights": {
                      "properties": {
                        "create_applications": {
                          "type": "boolean"
                        },
                        "create_clients": {
                          "type": "boolean"
                        },
                        "create_gateways": {
                          "type": "boolean"
                        },
                        "create_organizations": {
                          "type": "boolean"
                        },
                        "update_name": {
                          "type": "boolean"
                        },
                        "update_primary_email_address": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "js": {
                  "properties": {
                    "join_eui_prefixes": {
                      "example": [
                        "70B3D57ED0000000/56"
                      ],
                      "items": {
                        "format": "byte",
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "noc": {
                  "properties": {
                    "access": {
                      "properties": {
                        "extended": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "ns": {
                  "properties": {
                    "cooldown_window": {
                      "type": "string"
                    },
                    "deduplication_window": {
                      "type": "string"
                    },
                    "dev_addr_prefixes": {
                      "example": [
                        "2600AB00/24"
                      ],
                      "items": {
                        "format": "byte",
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ui": {
                  "properties": {
                    "branding_base_url": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pb": {
              "properties": {
                "listed": {
                  "description": "Indicates whether the Home Network is publicly listed.",
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "ids": {
          "properties": {
            "tenant_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "max_applications": {
          "description": "If set, restricts the maximum number of applications that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_clients": {
          "description": "If set, restricts the maximum number of clients that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_end_devices": {
          "description": "If set, restricts the maximum number of end_devices that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_gateways": {
          "description": "If set, restricts the maximum number of gateways that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_organizations": {
          "description": "If set, restricts the maximum number of organizations that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_users": {
          "description": "If set, restricts the maximum number of users that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "state": {
          "default": "STATE_REQUESTED",
          "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
          "enum": [
            "STATE_REQUESTED",
            "STATE_APPROVED",
            "STATE_REJECTED",
            "STATE_FLAGGED",
            "STATE_SUSPENDED"
          ],
          "type": "string"
        },
        "state_description": {
          "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
          "type": "string"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/search/users

Search for users that match the conditions specified in the request.

Expand Collapse

This is only available to admin users.

Request Parameters
Field Type Required Description
query string Find users where the ID, name or description contains this substring.
id_contains string Find users where the ID contains this substring.
name_contains string Find users where the name contains this substring.
description_contains string Find users where the description contains this substring.
attributes_contain[string] string This is a request variable of the map type. The query format is "map_name[key]=value", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age["bob"]=18
state array Find users where the state is any of these states. - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin. - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin. - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin. - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin. - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted users.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "users": {
    "items": {
      "description": "User is the message that defines a user on the network.",
      "properties": {
        "admin": {
          "description": "This user is an admin.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by other admins.",
          "type": "boolean"
        },
        "application_limit": {
          "description": "The maximum number of applications of the user.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this users. Typically used for storing integration-specific data.",
          "type": "object"
        },
        "client_limit": {
          "description": "The maximum number of clients of the user.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "console_preferences": {
          "description": "UserConsolePreferences is the message that defines the user preferences for the Console.",
          "properties": {
            "console_theme": {
              "default": "CONSOLE_THEME_SYSTEM",
              "description": "ConsoleTheme is the theme of the Console.\n\n - CONSOLE_THEME_SYSTEM: The user prefers the system mode.\n - CONSOLE_THEME_LIGHT: The user prefers the light mode.\n - CONSOLE_THEME_DARK: The user prefers the dark mode.",
              "enum": [
                "CONSOLE_THEME_SYSTEM",
                "CONSOLE_THEME_LIGHT",
                "CONSOLE_THEME_DARK"
              ],
              "type": "string"
            },
            "dashboard_layouts": {
              "properties": {
                "api_key": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "application": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "collaborator": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "end_device": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "gateway": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "organization": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "overview": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "user": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "sort_by": {
              "description": "SortBy defines the field to which the Console will sort the display of entities.",
              "properties": {
                "api_key": {
                  "type": "string"
                },
                "application": {
                  "type": "string"
                },
                "collaborator": {
                  "type": "string"
                },
                "end_device": {
                  "type": "string"
                },
                "gateway": {
                  "type": "string"
                },
                "organization": {
                  "type": "string"
                },
                "user": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tutorials": {
              "properties": {
                "seen": {
                  "items": {
                    "default": "TUTORIAL_UNKNOWN",
                    "description": "Tutorial is a set of possible tutorials in the Console.",
                    "enum": [
                      "TUTORIAL_UNKNOWN",
                      "TUTORIAL_LIVE_DATA_SPLIT_VIEW",
                      "TUTORIAL_LORAWAN_STARTER_USER"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this user. Typically used to indicate who to contact with security/billing questions about the user.\nThis field is deprecated.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the user was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the user was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the user. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "email_notification_preferences": {
          "description": "EmailNotificationPreferences is the message that defines the types of notifications for which the user wants to receive an email.",
          "properties": {
            "types": {
              "items": {
                "default": "UNKNOWN",
                "enum": [
                  "UNKNOWN",
                  "API_KEY_CREATED",
                  "API_KEY_CHANGED",
                  "CLIENT_REQUESTED",
                  "COLLABORATOR_CHANGED",
                  "ENTITY_STATE_CHANGED",
                  "INVITATION",
                  "LOGIN_TOKEN",
                  "PASSWORD_CHANGED",
                  "TEMPORARY_PASSWORD",
                  "USER_REQUESTED",
                  "VALIDATE",
                  "SUPPORT_ACCESS_REQUESTED"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "gateway_limit": {
          "description": "The maximum number of gateways of the user.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the user. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "organization_limit": {
          "description": "The maximum number of organizations of the user.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "password": {
          "description": "The password field is only considered when creating a user.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the UpdatePassword method of the UserRegistry service for more information.",
          "type": "string"
        },
        "password_updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "primary_email_address": {
          "description": "Primary email address that can be used for logging in.\nThis address is not public, use contact_info for that.",
          "type": "string"
        },
        "primary_email_address_validated_at": {
          "description": "When the primary email address was validated. Note that email address validation is not required on all networks.",
          "format": "date-time",
          "type": "string"
        },
        "profile_picture": {
          "properties": {
            "embedded": {
              "properties": {
                "data": {
                  "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                  "format": "byte",
                  "type": "string"
                },
                "mime_type": {
                  "description": "MIME type of the picture.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "sizes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "URLs of the picture for different sizes, if available on a CDN.",
              "type": "object"
            }
          },
          "type": "object"
        },
        "require_password_update": {
          "type": "boolean"
        },
        "state": {
          "default": "STATE_REQUESTED",
          "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
          "enum": [
            "STATE_REQUESTED",
            "STATE_APPROVED",
            "STATE_REJECTED",
            "STATE_FLAGGED",
            "STATE_SUSPENDED"
          ],
          "type": "string"
        },
        "state_description": {
          "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
          "type": "string"
        },
        "temporary_password": {
          "description": "The temporary password can only be used to update a user's password; never returned on API calls.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the CreateTemporaryPassword method of the UserRegistry service for more information.",
          "type": "string"
        },
        "temporary_password_created_at": {
          "format": "date-time",
          "type": "string"
        },
        "temporary_password_expires_at": {
          "format": "date-time",
          "type": "string"
        },
        "universal_rights": {
          "description": "Universal rights are capable of restricting the user's interactions with the API, be it an admin or not.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "updated_at": {
          "description": "When the user was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

TenantRegistry

Manage tenants as a tenant administrator.

Expand Collapse

get

/tenants

Expand Collapse

Request Parameters
Field Type Required Description
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "tenants": {
    "items": {
      "description": "Tenant is the message that defines a Tenant in the network.",
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "billing": {
          "properties": {
            "aws_saas_marketplace": {
              "properties": {
                "customer_identifier": {
                  "type": "string"
                },
                "product_code": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "counting": {
              "properties": {
                "end_devices": {
                  "default": "ALL",
                  "enum": [
                    "ALL",
                    "ONLY_ACTIVATED"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "stripe": {
              "properties": {
                "customer_id": {
                  "type": "string"
                },
                "plan_id": {
                  "type": "string"
                },
                "subscription_id": {
                  "type": "string"
                },
                "subscription_item_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "billing_identifiers": {
          "properties": {
            "billing_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "capabilities": {
          "type": "object"
        },
        "configuration": {
          "properties": {
            "clusters": {
              "additionalProperties": {
                "properties": {
                  "ars": {
                    "properties": {
                      "routing": {
                        "properties": {
                          "enabled": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "as": {
                    "properties": {
                      "webhooks": {
                        "properties": {
                          "queue": {
                            "properties": {
                              "enabled": {
                                "type": "boolean"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "gs": {
                    "properties": {
                      "mtls_authentication": {
                        "properties": {
                          "client_ca_pool": {
                            "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "is": {
                    "properties": {
                      "admin_rights": {
                        "properties": {
                          "all": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "application_limits": {
                        "properties": {
                          "end_devices": {
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "email": {
                        "properties": {
                          "network": {
                            "properties": {
                              "branding_base_url": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_picture": {
                        "properties": {
                          "disable_upload": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "organization_limits": {
                        "properties": {
                          "applications": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "clients": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "gateways": {
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "profile_picture": {
                        "properties": {
                          "disable_upload": {
                            "type": "boolean"
                          },
                          "use_gravatar": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "user_limits": {
                        "properties": {
                          "applications": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "clients": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "gateways": {
                            "format": "uint64",
                            "type": "string"
                          },
                          "organizations": {
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "user_login": {
                        "properties": {
                          "disable_credentials_login": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "user_registration": {
                        "properties": {
                          "admin_approval": {
                            "properties": {
                              "required": {
                                "type": "boolean"
                              }
                            },
                            "type": "object"
                          },
                          "contact_info_validation": {
                            "properties": {
                              "required": {
                                "type": "boolean"
                              }
                            },
                            "type": "object"
                          },
                          "enabled": {
                            "type": "boolean"
                          },
                          "invitation": {
                            "properties": {
                              "required": {
                                "type": "boolean"
                              },
                              "token_ttl": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "password_requirements": {
                            "properties": {
                              "max_length": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_digits": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_length": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_special": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_uppercase": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "user_rights": {
                        "properties": {
                          "create_applications": {
                            "type": "boolean"
                          },
                          "create_clients": {
                            "type": "boolean"
                          },
                          "create_gateways": {
                            "type": "boolean"
                          },
                          "create_organizations": {
                            "type": "boolean"
                          },
                          "update_name": {
                            "type": "boolean"
                          },
                          "update_primary_email_address": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "js": {
                    "properties": {
                      "join_eui_prefixes": {
                        "example": [
                          "70B3D57ED0000000/56"
                        ],
                        "items": {
                          "format": "byte",
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "noc": {
                    "properties": {
                      "access": {
                        "properties": {
                          "extended": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "ns": {
                    "properties": {
                      "cooldown_window": {
                        "type": "string"
                      },
                      "deduplication_window": {
                        "type": "string"
                      },
                      "dev_addr_prefixes": {
                        "example": [
                          "2600AB00/24"
                        ],
                        "items": {
                          "format": "byte",
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "net_id": {
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ui": {
                    "properties": {
                      "branding_base_url": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "description": "Configuration per cluster (by ID).",
              "type": "object"
            },
            "default_cluster": {
              "properties": {
                "ars": {
                  "properties": {
                    "routing": {
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "as": {
                  "properties": {
                    "webhooks": {
                      "properties": {
                        "queue": {
                          "properties": {
                            "enabled": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "gs": {
                  "properties": {
                    "mtls_authentication": {
                      "properties": {
                        "client_ca_pool": {
                          "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "is": {
                  "properties": {
                    "admin_rights": {
                      "properties": {
                        "all": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "application_limits": {
                      "properties": {
                        "end_devices": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "email": {
                      "properties": {
                        "network": {
                          "properties": {
                            "branding_base_url": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_picture": {
                      "properties": {
                        "disable_upload": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "organization_limits": {
                      "properties": {
                        "applications": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "clients": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "gateways": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "profile_picture": {
                      "properties": {
                        "disable_upload": {
                          "type": "boolean"
                        },
                        "use_gravatar": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "user_limits": {
                      "properties": {
                        "applications": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "clients": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "gateways": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "organizations": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "user_login": {
                      "properties": {
                        "disable_credentials_login": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "user_registration": {
                      "properties": {
                        "admin_approval": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "contact_info_validation": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "enabled": {
                          "type": "boolean"
                        },
                        "invitation": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            },
                            "token_ttl": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "password_requirements": {
                          "properties": {
                            "max_length": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_digits": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_length": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_special": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_uppercase": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "user_rights": {
                      "properties": {
                        "create_applications": {
                          "type": "boolean"
                        },
                        "create_clients": {
                          "type": "boolean"
                        },
                        "create_gateways": {
                          "type": "boolean"
                        },
                        "create_organizations": {
                          "type": "boolean"
                        },
                        "update_name": {
                          "type": "boolean"
                        },
                        "update_primary_email_address": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "js": {
                  "properties": {
                    "join_eui_prefixes": {
                      "example": [
                        "70B3D57ED0000000/56"
                      ],
                      "items": {
                        "format": "byte",
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "noc": {
                  "properties": {
                    "access": {
                      "properties": {
                        "extended": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "ns": {
                  "properties": {
                    "cooldown_window": {
                      "type": "string"
                    },
                    "deduplication_window": {
                      "type": "string"
                    },
                    "dev_addr_prefixes": {
                      "example": [
                        "2600AB00/24"
                      ],
                      "items": {
                        "format": "byte",
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ui": {
                  "properties": {
                    "branding_base_url": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pb": {
              "properties": {
                "listed": {
                  "description": "Indicates whether the Home Network is publicly listed.",
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "ids": {
          "properties": {
            "tenant_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "max_applications": {
          "description": "If set, restricts the maximum number of applications that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_clients": {
          "description": "If set, restricts the maximum number of clients that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_end_devices": {
          "description": "If set, restricts the maximum number of end_devices that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_gateways": {
          "description": "If set, restricts the maximum number of gateways that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_organizations": {
          "description": "If set, restricts the maximum number of organizations that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "max_users": {
          "description": "If set, restricts the maximum number of users that can be created.",
          "format": "uint64",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "state": {
          "default": "STATE_REQUESTED",
          "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
          "enum": [
            "STATE_REQUESTED",
            "STATE_APPROVED",
            "STATE_REJECTED",
            "STATE_FLAGGED",
            "STATE_SUSPENDED"
          ],
          "type": "string"
        },
        "state_description": {
          "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
          "type": "string"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/tenants

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "initial_user": {
    "description": "User is the message that defines a user on the network.",
    "properties": {
      "admin": {
        "description": "This user is an admin.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by other admins.",
        "type": "boolean"
      },
      "application_limit": {
        "description": "The maximum number of applications of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this users. Typically used for storing integration-specific data.",
        "type": "object"
      },
      "client_limit": {
        "description": "The maximum number of clients of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "console_preferences": {
        "description": "UserConsolePreferences is the message that defines the user preferences for the Console.",
        "properties": {
          "console_theme": {
            "default": "CONSOLE_THEME_SYSTEM",
            "description": "ConsoleTheme is the theme of the Console.\n\n - CONSOLE_THEME_SYSTEM: The user prefers the system mode.\n - CONSOLE_THEME_LIGHT: The user prefers the light mode.\n - CONSOLE_THEME_DARK: The user prefers the dark mode.",
            "enum": [
              "CONSOLE_THEME_SYSTEM",
              "CONSOLE_THEME_LIGHT",
              "CONSOLE_THEME_DARK"
            ],
            "type": "string"
          },
          "dashboard_layouts": {
            "properties": {
              "api_key": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "application": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "collaborator": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "end_device": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "gateway": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "organization": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "overview": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "user": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "sort_by": {
            "description": "SortBy defines the field to which the Console will sort the display of entities.",
            "properties": {
              "api_key": {
                "type": "string"
              },
              "application": {
                "type": "string"
              },
              "collaborator": {
                "type": "string"
              },
              "end_device": {
                "type": "string"
              },
              "gateway": {
                "type": "string"
              },
              "organization": {
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "tutorials": {
            "properties": {
              "seen": {
                "items": {
                  "default": "TUTORIAL_UNKNOWN",
                  "description": "Tutorial is a set of possible tutorials in the Console.",
                  "enum": [
                    "TUTORIAL_UNKNOWN",
                    "TUTORIAL_LIVE_DATA_SPLIT_VIEW",
                    "TUTORIAL_LORAWAN_STARTER_USER"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this user. Typically used to indicate who to contact with security/billing questions about the user.\nThis field is deprecated.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the user was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the user was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the user. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "email_notification_preferences": {
        "description": "EmailNotificationPreferences is the message that defines the types of notifications for which the user wants to receive an email.",
        "properties": {
          "types": {
            "items": {
              "default": "UNKNOWN",
              "enum": [
                "UNKNOWN",
                "API_KEY_CREATED",
                "API_KEY_CHANGED",
                "CLIENT_REQUESTED",
                "COLLABORATOR_CHANGED",
                "ENTITY_STATE_CHANGED",
                "INVITATION",
                "LOGIN_TOKEN",
                "PASSWORD_CHANGED",
                "TEMPORARY_PASSWORD",
                "USER_REQUESTED",
                "VALIDATE",
                "SUPPORT_ACCESS_REQUESTED"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "gateway_limit": {
        "description": "The maximum number of gateways of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": {
        "description": "The name of the user. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "organization_limit": {
        "description": "The maximum number of organizations of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "password": {
        "description": "The password field is only considered when creating a user.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the UpdatePassword method of the UserRegistry service for more information.",
        "type": "string"
      },
      "password_updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "primary_email_address": {
        "description": "Primary email address that can be used for logging in.\nThis address is not public, use contact_info for that.",
        "type": "string"
      },
      "primary_email_address_validated_at": {
        "description": "When the primary email address was validated. Note that email address validation is not required on all networks.",
        "format": "date-time",
        "type": "string"
      },
      "profile_picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "require_password_update": {
        "type": "boolean"
      },
      "state": {
        "default": "STATE_REQUESTED",
        "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
        "enum": [
          "STATE_REQUESTED",
          "STATE_APPROVED",
          "STATE_REJECTED",
          "STATE_FLAGGED",
          "STATE_SUSPENDED"
        ],
        "type": "string"
      },
      "state_description": {
        "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
        "type": "string"
      },
      "temporary_password": {
        "description": "The temporary password can only be used to update a user's password; never returned on API calls.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the CreateTemporaryPassword method of the UserRegistry service for more information.",
        "type": "string"
      },
      "temporary_password_created_at": {
        "format": "date-time",
        "type": "string"
      },
      "temporary_password_expires_at": {
        "format": "date-time",
        "type": "string"
      },
      "universal_rights": {
        "description": "Universal rights are capable of restricting the user's interactions with the API, be it an admin or not.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "updated_at": {
        "description": "When the user was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "tenant": {
    "description": "Tenant is the message that defines a Tenant in the network.",
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "billing": {
        "properties": {
          "aws_saas_marketplace": {
            "properties": {
              "customer_identifier": {
                "type": "string"
              },
              "product_code": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "counting": {
            "properties": {
              "end_devices": {
                "default": "ALL",
                "enum": [
                  "ALL",
                  "ONLY_ACTIVATED"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "stripe": {
            "properties": {
              "customer_id": {
                "type": "string"
              },
              "plan_id": {
                "type": "string"
              },
              "subscription_id": {
                "type": "string"
              },
              "subscription_item_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "billing_identifiers": {
        "properties": {
          "billing_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "capabilities": {
        "type": "object"
      },
      "configuration": {
        "properties": {
          "clusters": {
            "additionalProperties": {
              "properties": {
                "ars": {
                  "properties": {
                    "routing": {
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "as": {
                  "properties": {
                    "webhooks": {
                      "properties": {
                        "queue": {
                          "properties": {
                            "enabled": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "gs": {
                  "properties": {
                    "mtls_authentication": {
                      "properties": {
                        "client_ca_pool": {
                          "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "is": {
                  "properties": {
                    "admin_rights": {
                      "properties": {
                        "all": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "application_limits": {
                      "properties": {
                        "end_devices": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "email": {
                      "properties": {
                        "network": {
                          "properties": {
                            "branding_base_url": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_picture": {
                      "properties": {
                        "disable_upload": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "organization_limits": {
                      "properties": {
                        "applications": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "clients": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "gateways": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "profile_picture": {
                      "properties": {
                        "disable_upload": {
                          "type": "boolean"
                        },
                        "use_gravatar": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "user_limits": {
                      "properties": {
                        "applications": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "clients": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "gateways": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "organizations": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "user_login": {
                      "properties": {
                        "disable_credentials_login": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "user_registration": {
                      "properties": {
                        "admin_approval": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "contact_info_validation": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "enabled": {
                          "type": "boolean"
                        },
                        "invitation": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            },
                            "token_ttl": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "password_requirements": {
                          "properties": {
                            "max_length": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_digits": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_length": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_special": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_uppercase": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "user_rights": {
                      "properties": {
                        "create_applications": {
                          "type": "boolean"
                        },
                        "create_clients": {
                          "type": "boolean"
                        },
                        "create_gateways": {
                          "type": "boolean"
                        },
                        "create_organizations": {
                          "type": "boolean"
                        },
                        "update_name": {
                          "type": "boolean"
                        },
                        "update_primary_email_address": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "js": {
                  "properties": {
                    "join_eui_prefixes": {
                      "example": [
                        "70B3D57ED0000000/56"
                      ],
                      "items": {
                        "format": "byte",
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "noc": {
                  "properties": {
                    "access": {
                      "properties": {
                        "extended": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "ns": {
                  "properties": {
                    "cooldown_window": {
                      "type": "string"
                    },
                    "deduplication_window": {
                      "type": "string"
                    },
                    "dev_addr_prefixes": {
                      "example": [
                        "2600AB00/24"
                      ],
                      "items": {
                        "format": "byte",
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ui": {
                  "properties": {
                    "branding_base_url": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "description": "Configuration per cluster (by ID).",
            "type": "object"
          },
          "default_cluster": {
            "properties": {
              "ars": {
                "properties": {
                  "routing": {
                    "properties": {
                      "enabled": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "as": {
                "properties": {
                  "webhooks": {
                    "properties": {
                      "queue": {
                        "properties": {
                          "enabled": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "gs": {
                "properties": {
                  "mtls_authentication": {
                    "properties": {
                      "client_ca_pool": {
                        "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "is": {
                "properties": {
                  "admin_rights": {
                    "properties": {
                      "all": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "application_limits": {
                    "properties": {
                      "end_devices": {
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "email": {
                    "properties": {
                      "network": {
                        "properties": {
                          "branding_base_url": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_picture": {
                    "properties": {
                      "disable_upload": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "organization_limits": {
                    "properties": {
                      "applications": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "clients": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "gateways": {
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "profile_picture": {
                    "properties": {
                      "disable_upload": {
                        "type": "boolean"
                      },
                      "use_gravatar": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "user_limits": {
                    "properties": {
                      "applications": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "clients": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "gateways": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "organizations": {
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "user_login": {
                    "properties": {
                      "disable_credentials_login": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "user_registration": {
                    "properties": {
                      "admin_approval": {
                        "properties": {
                          "required": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "contact_info_validation": {
                        "properties": {
                          "required": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "enabled": {
                        "type": "boolean"
                      },
                      "invitation": {
                        "properties": {
                          "required": {
                            "type": "boolean"
                          },
                          "token_ttl": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "password_requirements": {
                        "properties": {
                          "max_length": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_digits": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_length": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_special": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_uppercase": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "user_rights": {
                    "properties": {
                      "create_applications": {
                        "type": "boolean"
                      },
                      "create_clients": {
                        "type": "boolean"
                      },
                      "create_gateways": {
                        "type": "boolean"
                      },
                      "create_organizations": {
                        "type": "boolean"
                      },
                      "update_name": {
                        "type": "boolean"
                      },
                      "update_primary_email_address": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "js": {
                "properties": {
                  "join_eui_prefixes": {
                    "example": [
                      "70B3D57ED0000000/56"
                    ],
                    "items": {
                      "format": "byte",
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "noc": {
                "properties": {
                  "access": {
                    "properties": {
                      "extended": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "ns": {
                "properties": {
                  "cooldown_window": {
                    "type": "string"
                  },
                  "deduplication_window": {
                    "type": "string"
                  },
                  "dev_addr_prefixes": {
                    "example": [
                      "2600AB00/24"
                    ],
                    "items": {
                      "format": "byte",
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "net_id": {
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ui": {
                "properties": {
                  "branding_base_url": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pb": {
            "properties": {
              "listed": {
                "description": "Indicates whether the Home Network is publicly listed.",
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "type": "string"
      },
      "ids": {
        "properties": {
          "tenant_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "max_applications": {
        "description": "If set, restricts the maximum number of applications that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_clients": {
        "description": "If set, restricts the maximum number of clients that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_end_devices": {
        "description": "If set, restricts the maximum number of end_devices that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_gateways": {
        "description": "If set, restricts the maximum number of gateways that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_organizations": {
        "description": "If set, restricts the maximum number of organizations that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_users": {
        "description": "If set, restricts the maximum number of users that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "state": {
        "default": "STATE_REQUESTED",
        "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
        "enum": [
          "STATE_REQUESTED",
          "STATE_APPROVED",
          "STATE_REJECTED",
          "STATE_FLAGGED",
          "STATE_SUSPENDED"
        ],
        "type": "string"
      },
      "state_description": {
        "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
        "type": "string"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "type": "object"
  },
  "billing": {
    "properties": {
      "aws_saas_marketplace": {
        "properties": {
          "customer_identifier": {
            "type": "string"
          },
          "product_code": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "counting": {
        "properties": {
          "end_devices": {
            "default": "ALL",
            "enum": [
              "ALL",
              "ONLY_ACTIVATED"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "stripe": {
        "properties": {
          "customer_id": {
            "type": "string"
          },
          "plan_id": {
            "type": "string"
          },
          "subscription_id": {
            "type": "string"
          },
          "subscription_item_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "billing_identifiers": {
    "properties": {
      "billing_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "capabilities": {
    "type": "object"
  },
  "configuration": {
    "properties": {
      "clusters": {
        "additionalProperties": {
          "properties": {
            "ars": {
              "properties": {
                "routing": {
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "as": {
              "properties": {
                "webhooks": {
                  "properties": {
                    "queue": {
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "gs": {
              "properties": {
                "mtls_authentication": {
                  "properties": {
                    "client_ca_pool": {
                      "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "is": {
              "properties": {
                "admin_rights": {
                  "properties": {
                    "all": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "application_limits": {
                  "properties": {
                    "end_devices": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "email": {
                  "properties": {
                    "network": {
                      "properties": {
                        "branding_base_url": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "end_device_picture": {
                  "properties": {
                    "disable_upload": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "organization_limits": {
                  "properties": {
                    "applications": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "clients": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "gateways": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "profile_picture": {
                  "properties": {
                    "disable_upload": {
                      "type": "boolean"
                    },
                    "use_gravatar": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "user_limits": {
                  "properties": {
                    "applications": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "clients": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "gateways": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "organizations": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "user_login": {
                  "properties": {
                    "disable_credentials_login": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "user_registration": {
                  "properties": {
                    "admin_approval": {
                      "properties": {
                        "required": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "contact_info_validation": {
                      "properties": {
                        "required": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "invitation": {
                      "properties": {
                        "required": {
                          "type": "boolean"
                        },
                        "token_ttl": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "password_requirements": {
                      "properties": {
                        "max_length": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_digits": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_length": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_special": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_uppercase": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "user_rights": {
                  "properties": {
                    "create_applications": {
                      "type": "boolean"
                    },
                    "create_clients": {
                      "type": "boolean"
                    },
                    "create_gateways": {
                      "type": "boolean"
                    },
                    "create_organizations": {
                      "type": "boolean"
                    },
                    "update_name": {
                      "type": "boolean"
                    },
                    "update_primary_email_address": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "js": {
              "properties": {
                "join_eui_prefixes": {
                  "example": [
                    "70B3D57ED0000000/56"
                  ],
                  "items": {
                    "format": "byte",
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "noc": {
              "properties": {
                "access": {
                  "properties": {
                    "extended": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "ns": {
              "properties": {
                "cooldown_window": {
                  "type": "string"
                },
                "deduplication_window": {
                  "type": "string"
                },
                "dev_addr_prefixes": {
                  "example": [
                    "2600AB00/24"
                  ],
                  "items": {
                    "format": "byte",
                    "type": "string"
                  },
                  "type": "array"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ui": {
              "properties": {
                "branding_base_url": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "description": "Configuration per cluster (by ID).",
        "type": "object"
      },
      "default_cluster": {
        "properties": {
          "ars": {
            "properties": {
              "routing": {
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "as": {
            "properties": {
              "webhooks": {
                "properties": {
                  "queue": {
                    "properties": {
                      "enabled": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "gs": {
            "properties": {
              "mtls_authentication": {
                "properties": {
                  "client_ca_pool": {
                    "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "is": {
            "properties": {
              "admin_rights": {
                "properties": {
                  "all": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "application_limits": {
                "properties": {
                  "end_devices": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "email": {
                "properties": {
                  "network": {
                    "properties": {
                      "branding_base_url": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "end_device_picture": {
                "properties": {
                  "disable_upload": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "organization_limits": {
                "properties": {
                  "applications": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "clients": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "gateways": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "profile_picture": {
                "properties": {
                  "disable_upload": {
                    "type": "boolean"
                  },
                  "use_gravatar": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "user_limits": {
                "properties": {
                  "applications": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "clients": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "gateways": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "organizations": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "user_login": {
                "properties": {
                  "disable_credentials_login": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "user_registration": {
                "properties": {
                  "admin_approval": {
                    "properties": {
                      "required": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "contact_info_validation": {
                    "properties": {
                      "required": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "enabled": {
                    "type": "boolean"
                  },
                  "invitation": {
                    "properties": {
                      "required": {
                        "type": "boolean"
                      },
                      "token_ttl": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "password_requirements": {
                    "properties": {
                      "max_length": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_digits": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_length": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_special": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_uppercase": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "user_rights": {
                "properties": {
                  "create_applications": {
                    "type": "boolean"
                  },
                  "create_clients": {
                    "type": "boolean"
                  },
                  "create_gateways": {
                    "type": "boolean"
                  },
                  "create_organizations": {
                    "type": "boolean"
                  },
                  "update_name": {
                    "type": "boolean"
                  },
                  "update_primary_email_address": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "js": {
            "properties": {
              "join_eui_prefixes": {
                "example": [
                  "70B3D57ED0000000/56"
                ],
                "items": {
                  "format": "byte",
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "noc": {
            "properties": {
              "access": {
                "properties": {
                  "extended": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "ns": {
            "properties": {
              "cooldown_window": {
                "type": "string"
              },
              "deduplication_window": {
                "type": "string"
              },
              "dev_addr_prefixes": {
                "example": [
                  "2600AB00/24"
                ],
                "items": {
                  "format": "byte",
                  "type": "string"
                },
                "type": "array"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ui": {
            "properties": {
              "branding_base_url": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pb": {
        "properties": {
          "listed": {
            "description": "Indicates whether the Home Network is publicly listed.",
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "ids": {
    "properties": {
      "tenant_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "max_applications": {
    "description": "If set, restricts the maximum number of applications that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_clients": {
    "description": "If set, restricts the maximum number of clients that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_end_devices": {
    "description": "If set, restricts the maximum number of end_devices that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_gateways": {
    "description": "If set, restricts the maximum number of gateways that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_organizations": {
    "description": "If set, restricts the maximum number of organizations that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_users": {
    "description": "If set, restricts the maximum number of users that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "name": {
    "type": "string"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/tenants/gateways/info

Get the tenant identifiers and gateway for the given EUI.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  },
  "field_mask": {
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "gateway": {
    "description": "Gateway is the message that defines a gateway on the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "alert_notification_profile_ids": {
        "properties": {
          "profile_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "antennas": {
        "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
        "items": {
          "description": "GatewayAntenna is the message that defines a gateway antenna.",
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "gain": {
              "description": "Antenna gain relative to the gateway, in dBi.",
              "format": "float",
              "type": "number"
            },
            "location": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "placement": {
              "default": "PLACEMENT_UNKNOWN",
              "enum": [
                "PLACEMENT_UNKNOWN",
                "INDOOR",
                "OUTDOOR"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
        "type": "object"
      },
      "auto_update": {
        "type": "boolean"
      },
      "claim_authentication_code": {
        "description": "Authentication code for claiming gateways.",
        "properties": {
          "secret": {
            "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
            "properties": {
              "key_id": {
                "description": "ID of the Key used to encrypt the secret.",
                "type": "string"
              },
              "value": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "disable_packet_broker_forwarding": {
        "type": "boolean"
      },
      "downlink_path_constraint": {
        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
        "enum": [
          "DOWNLINK_PATH_CONSTRAINT_NONE",
          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
          "DOWNLINK_PATH_CONSTRAINT_NEVER"
        ],
        "type": "string"
      },
      "enforce_duty_cycle": {
        "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
        "type": "boolean"
      },
      "frequency_plan_id": {
        "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
        "type": "string"
      },
      "frequency_plan_ids": {
        "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "gateway_server_address": {
        "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "gateway_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "title": "next: 34",
        "type": "array"
      },
      "lbs_lns_secret": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "location_public": {
        "description": "The location of this gateway may be publicly displayed.",
        "type": "boolean"
      },
      "lrfhss": {
        "description": "LR-FHSS gateway capabilities.",
        "properties": {
          "supported": {
            "description": "The gateway supports the LR-FHSS uplink channels.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "name": {
        "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "require_authenticated_connection": {
        "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
        "type": "boolean"
      },
      "schedule_anytime_delay": {
        "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
        "type": "string"
      },
      "schedule_downlink_late": {
        "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
        "type": "boolean"
      },
      "status_public": {
        "description": "The status of this gateway may be publicly displayed.",
        "type": "boolean"
      },
      "target_cups_key": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "target_cups_uri": {
        "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "update_channel": {
        "type": "string"
      },
      "update_location_from_status": {
        "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
        "type": "boolean"
      },
      "updated_at": {
        "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          },
          "runtime_version": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "tenant_ids": {
    "properties": {
      "tenant_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/tenants/gateways/release-eui

Release the EUI of the gateway.

Expand Collapse

This does not delete the gateway but removes the EUI.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/tenants/registry-totals

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "tenant_ids": {
    "items": {
      "properties": {
        "tenant_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "totals": {
    "items": {
      "properties": {
        "tenant_ids": {
          "properties": {
            "tenant_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "totals": {
          "properties": {
            "activated_end_devices": {
              "format": "uint64",
              "type": "string"
            },
            "applications": {
              "format": "uint64",
              "type": "string"
            },
            "clients": {
              "format": "uint64",
              "type": "string"
            },
            "end_devices": {
              "format": "uint64",
              "type": "string"
            },
            "gateways": {
              "format": "uint64",
              "type": "string"
            },
            "organizations": {
              "format": "uint64",
              "type": "string"
            },
            "users": {
              "format": "uint64",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/tenants/{tenant.ids.tenant_id}

Expand Collapse

Request Parameters
Field Type Required Description
tenant.ids.tenant_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "tenant": {
    "description": "Tenant is the message that defines a Tenant in the network.",
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "billing": {
        "properties": {
          "aws_saas_marketplace": {
            "properties": {
              "customer_identifier": {
                "type": "string"
              },
              "product_code": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "counting": {
            "properties": {
              "end_devices": {
                "default": "ALL",
                "enum": [
                  "ALL",
                  "ONLY_ACTIVATED"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "stripe": {
            "properties": {
              "customer_id": {
                "type": "string"
              },
              "plan_id": {
                "type": "string"
              },
              "subscription_id": {
                "type": "string"
              },
              "subscription_item_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "billing_identifiers": {
        "properties": {
          "billing_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "capabilities": {
        "type": "object"
      },
      "configuration": {
        "properties": {
          "clusters": {
            "additionalProperties": {
              "properties": {
                "ars": {
                  "properties": {
                    "routing": {
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "as": {
                  "properties": {
                    "webhooks": {
                      "properties": {
                        "queue": {
                          "properties": {
                            "enabled": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "gs": {
                  "properties": {
                    "mtls_authentication": {
                      "properties": {
                        "client_ca_pool": {
                          "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "is": {
                  "properties": {
                    "admin_rights": {
                      "properties": {
                        "all": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "application_limits": {
                      "properties": {
                        "end_devices": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "email": {
                      "properties": {
                        "network": {
                          "properties": {
                            "branding_base_url": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_picture": {
                      "properties": {
                        "disable_upload": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "organization_limits": {
                      "properties": {
                        "applications": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "clients": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "gateways": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "profile_picture": {
                      "properties": {
                        "disable_upload": {
                          "type": "boolean"
                        },
                        "use_gravatar": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "user_limits": {
                      "properties": {
                        "applications": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "clients": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "gateways": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "organizations": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "user_login": {
                      "properties": {
                        "disable_credentials_login": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "user_registration": {
                      "properties": {
                        "admin_approval": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "contact_info_validation": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "enabled": {
                          "type": "boolean"
                        },
                        "invitation": {
                          "properties": {
                            "required": {
                              "type": "boolean"
                            },
                            "token_ttl": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "password_requirements": {
                          "properties": {
                            "max_length": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_digits": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_length": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_special": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_uppercase": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "user_rights": {
                      "properties": {
                        "create_applications": {
                          "type": "boolean"
                        },
                        "create_clients": {
                          "type": "boolean"
                        },
                        "create_gateways": {
                          "type": "boolean"
                        },
                        "create_organizations": {
                          "type": "boolean"
                        },
                        "update_name": {
                          "type": "boolean"
                        },
                        "update_primary_email_address": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "js": {
                  "properties": {
                    "join_eui_prefixes": {
                      "example": [
                        "70B3D57ED0000000/56"
                      ],
                      "items": {
                        "format": "byte",
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "noc": {
                  "properties": {
                    "access": {
                      "properties": {
                        "extended": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "ns": {
                  "properties": {
                    "cooldown_window": {
                      "type": "string"
                    },
                    "deduplication_window": {
                      "type": "string"
                    },
                    "dev_addr_prefixes": {
                      "example": [
                        "2600AB00/24"
                      ],
                      "items": {
                        "format": "byte",
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ui": {
                  "properties": {
                    "branding_base_url": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "description": "Configuration per cluster (by ID).",
            "type": "object"
          },
          "default_cluster": {
            "properties": {
              "ars": {
                "properties": {
                  "routing": {
                    "properties": {
                      "enabled": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "as": {
                "properties": {
                  "webhooks": {
                    "properties": {
                      "queue": {
                        "properties": {
                          "enabled": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "gs": {
                "properties": {
                  "mtls_authentication": {
                    "properties": {
                      "client_ca_pool": {
                        "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "is": {
                "properties": {
                  "admin_rights": {
                    "properties": {
                      "all": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "application_limits": {
                    "properties": {
                      "end_devices": {
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "email": {
                    "properties": {
                      "network": {
                        "properties": {
                          "branding_base_url": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_picture": {
                    "properties": {
                      "disable_upload": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "organization_limits": {
                    "properties": {
                      "applications": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "clients": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "gateways": {
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "profile_picture": {
                    "properties": {
                      "disable_upload": {
                        "type": "boolean"
                      },
                      "use_gravatar": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "user_limits": {
                    "properties": {
                      "applications": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "clients": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "gateways": {
                        "format": "uint64",
                        "type": "string"
                      },
                      "organizations": {
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "user_login": {
                    "properties": {
                      "disable_credentials_login": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "user_registration": {
                    "properties": {
                      "admin_approval": {
                        "properties": {
                          "required": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "contact_info_validation": {
                        "properties": {
                          "required": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "enabled": {
                        "type": "boolean"
                      },
                      "invitation": {
                        "properties": {
                          "required": {
                            "type": "boolean"
                          },
                          "token_ttl": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "password_requirements": {
                        "properties": {
                          "max_length": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_digits": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_length": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_special": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_uppercase": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "user_rights": {
                    "properties": {
                      "create_applications": {
                        "type": "boolean"
                      },
                      "create_clients": {
                        "type": "boolean"
                      },
                      "create_gateways": {
                        "type": "boolean"
                      },
                      "create_organizations": {
                        "type": "boolean"
                      },
                      "update_name": {
                        "type": "boolean"
                      },
                      "update_primary_email_address": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "js": {
                "properties": {
                  "join_eui_prefixes": {
                    "example": [
                      "70B3D57ED0000000/56"
                    ],
                    "items": {
                      "format": "byte",
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "noc": {
                "properties": {
                  "access": {
                    "properties": {
                      "extended": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "ns": {
                "properties": {
                  "cooldown_window": {
                    "type": "string"
                  },
                  "deduplication_window": {
                    "type": "string"
                  },
                  "dev_addr_prefixes": {
                    "example": [
                      "2600AB00/24"
                    ],
                    "items": {
                      "format": "byte",
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "net_id": {
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ui": {
                "properties": {
                  "branding_base_url": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pb": {
            "properties": {
              "listed": {
                "description": "Indicates whether the Home Network is publicly listed.",
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "type": "string"
      },
      "ids": {
        "type": "object"
      },
      "max_applications": {
        "description": "If set, restricts the maximum number of applications that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_clients": {
        "description": "If set, restricts the maximum number of clients that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_end_devices": {
        "description": "If set, restricts the maximum number of end_devices that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_gateways": {
        "description": "If set, restricts the maximum number of gateways that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_organizations": {
        "description": "If set, restricts the maximum number of organizations that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "max_users": {
        "description": "If set, restricts the maximum number of users that can be created.",
        "format": "uint64",
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "state": {
        "default": "STATE_REQUESTED",
        "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
        "enum": [
          "STATE_REQUESTED",
          "STATE_APPROVED",
          "STATE_REJECTED",
          "STATE_FLAGGED",
          "STATE_SUSPENDED"
        ],
        "type": "string"
      },
      "state_description": {
        "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
        "type": "string"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "type": "object"
  },
  "billing": {
    "properties": {
      "aws_saas_marketplace": {
        "properties": {
          "customer_identifier": {
            "type": "string"
          },
          "product_code": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "counting": {
        "properties": {
          "end_devices": {
            "default": "ALL",
            "enum": [
              "ALL",
              "ONLY_ACTIVATED"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "stripe": {
        "properties": {
          "customer_id": {
            "type": "string"
          },
          "plan_id": {
            "type": "string"
          },
          "subscription_id": {
            "type": "string"
          },
          "subscription_item_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "billing_identifiers": {
    "properties": {
      "billing_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "capabilities": {
    "type": "object"
  },
  "configuration": {
    "properties": {
      "clusters": {
        "additionalProperties": {
          "properties": {
            "ars": {
              "properties": {
                "routing": {
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "as": {
              "properties": {
                "webhooks": {
                  "properties": {
                    "queue": {
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "gs": {
              "properties": {
                "mtls_authentication": {
                  "properties": {
                    "client_ca_pool": {
                      "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "is": {
              "properties": {
                "admin_rights": {
                  "properties": {
                    "all": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "application_limits": {
                  "properties": {
                    "end_devices": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "email": {
                  "properties": {
                    "network": {
                      "properties": {
                        "branding_base_url": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "end_device_picture": {
                  "properties": {
                    "disable_upload": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "organization_limits": {
                  "properties": {
                    "applications": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "clients": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "gateways": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "profile_picture": {
                  "properties": {
                    "disable_upload": {
                      "type": "boolean"
                    },
                    "use_gravatar": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "user_limits": {
                  "properties": {
                    "applications": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "clients": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "gateways": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "organizations": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "user_login": {
                  "properties": {
                    "disable_credentials_login": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "user_registration": {
                  "properties": {
                    "admin_approval": {
                      "properties": {
                        "required": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "contact_info_validation": {
                      "properties": {
                        "required": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "invitation": {
                      "properties": {
                        "required": {
                          "type": "boolean"
                        },
                        "token_ttl": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "password_requirements": {
                      "properties": {
                        "max_length": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_digits": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_length": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_special": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_uppercase": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "user_rights": {
                  "properties": {
                    "create_applications": {
                      "type": "boolean"
                    },
                    "create_clients": {
                      "type": "boolean"
                    },
                    "create_gateways": {
                      "type": "boolean"
                    },
                    "create_organizations": {
                      "type": "boolean"
                    },
                    "update_name": {
                      "type": "boolean"
                    },
                    "update_primary_email_address": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "js": {
              "properties": {
                "join_eui_prefixes": {
                  "example": [
                    "70B3D57ED0000000/56"
                  ],
                  "items": {
                    "format": "byte",
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "noc": {
              "properties": {
                "access": {
                  "properties": {
                    "extended": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "ns": {
              "properties": {
                "cooldown_window": {
                  "type": "string"
                },
                "deduplication_window": {
                  "type": "string"
                },
                "dev_addr_prefixes": {
                  "example": [
                    "2600AB00/24"
                  ],
                  "items": {
                    "format": "byte",
                    "type": "string"
                  },
                  "type": "array"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ui": {
              "properties": {
                "branding_base_url": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "description": "Configuration per cluster (by ID).",
        "type": "object"
      },
      "default_cluster": {
        "properties": {
          "ars": {
            "properties": {
              "routing": {
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "as": {
            "properties": {
              "webhooks": {
                "properties": {
                  "queue": {
                    "properties": {
                      "enabled": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "gs": {
            "properties": {
              "mtls_authentication": {
                "properties": {
                  "client_ca_pool": {
                    "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "is": {
            "properties": {
              "admin_rights": {
                "properties": {
                  "all": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "application_limits": {
                "properties": {
                  "end_devices": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "email": {
                "properties": {
                  "network": {
                    "properties": {
                      "branding_base_url": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "end_device_picture": {
                "properties": {
                  "disable_upload": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "organization_limits": {
                "properties": {
                  "applications": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "clients": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "gateways": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "profile_picture": {
                "properties": {
                  "disable_upload": {
                    "type": "boolean"
                  },
                  "use_gravatar": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "user_limits": {
                "properties": {
                  "applications": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "clients": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "gateways": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "organizations": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "user_login": {
                "properties": {
                  "disable_credentials_login": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "user_registration": {
                "properties": {
                  "admin_approval": {
                    "properties": {
                      "required": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "contact_info_validation": {
                    "properties": {
                      "required": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "enabled": {
                    "type": "boolean"
                  },
                  "invitation": {
                    "properties": {
                      "required": {
                        "type": "boolean"
                      },
                      "token_ttl": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "password_requirements": {
                    "properties": {
                      "max_length": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_digits": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_length": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_special": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_uppercase": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "user_rights": {
                "properties": {
                  "create_applications": {
                    "type": "boolean"
                  },
                  "create_clients": {
                    "type": "boolean"
                  },
                  "create_gateways": {
                    "type": "boolean"
                  },
                  "create_organizations": {
                    "type": "boolean"
                  },
                  "update_name": {
                    "type": "boolean"
                  },
                  "update_primary_email_address": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "js": {
            "properties": {
              "join_eui_prefixes": {
                "example": [
                  "70B3D57ED0000000/56"
                ],
                "items": {
                  "format": "byte",
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "noc": {
            "properties": {
              "access": {
                "properties": {
                  "extended": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "ns": {
            "properties": {
              "cooldown_window": {
                "type": "string"
              },
              "deduplication_window": {
                "type": "string"
              },
              "dev_addr_prefixes": {
                "example": [
                  "2600AB00/24"
                ],
                "items": {
                  "format": "byte",
                  "type": "string"
                },
                "type": "array"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ui": {
            "properties": {
              "branding_base_url": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pb": {
        "properties": {
          "listed": {
            "description": "Indicates whether the Home Network is publicly listed.",
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "ids": {
    "properties": {
      "tenant_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "max_applications": {
    "description": "If set, restricts the maximum number of applications that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_clients": {
    "description": "If set, restricts the maximum number of clients that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_end_devices": {
    "description": "If set, restricts the maximum number of end_devices that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_gateways": {
    "description": "If set, restricts the maximum number of gateways that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_organizations": {
    "description": "If set, restricts the maximum number of organizations that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_users": {
    "description": "If set, restricts the maximum number of users that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "name": {
    "type": "string"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/tenants/{tenant_ids.tenant_id}

Expand Collapse

Request Parameters
Field Type Required Description
tenant_ids.tenant_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "type": "object"
  },
  "billing": {
    "properties": {
      "aws_saas_marketplace": {
        "properties": {
          "customer_identifier": {
            "type": "string"
          },
          "product_code": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "counting": {
        "properties": {
          "end_devices": {
            "default": "ALL",
            "enum": [
              "ALL",
              "ONLY_ACTIVATED"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "stripe": {
        "properties": {
          "customer_id": {
            "type": "string"
          },
          "plan_id": {
            "type": "string"
          },
          "subscription_id": {
            "type": "string"
          },
          "subscription_item_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "billing_identifiers": {
    "properties": {
      "billing_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "capabilities": {
    "type": "object"
  },
  "configuration": {
    "properties": {
      "clusters": {
        "additionalProperties": {
          "properties": {
            "ars": {
              "properties": {
                "routing": {
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "as": {
              "properties": {
                "webhooks": {
                  "properties": {
                    "queue": {
                      "properties": {
                        "enabled": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "gs": {
              "properties": {
                "mtls_authentication": {
                  "properties": {
                    "client_ca_pool": {
                      "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "is": {
              "properties": {
                "admin_rights": {
                  "properties": {
                    "all": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "application_limits": {
                  "properties": {
                    "end_devices": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "email": {
                  "properties": {
                    "network": {
                      "properties": {
                        "branding_base_url": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "end_device_picture": {
                  "properties": {
                    "disable_upload": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "organization_limits": {
                  "properties": {
                    "applications": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "clients": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "gateways": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "profile_picture": {
                  "properties": {
                    "disable_upload": {
                      "type": "boolean"
                    },
                    "use_gravatar": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "user_limits": {
                  "properties": {
                    "applications": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "clients": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "gateways": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "organizations": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "user_login": {
                  "properties": {
                    "disable_credentials_login": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "user_registration": {
                  "properties": {
                    "admin_approval": {
                      "properties": {
                        "required": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "contact_info_validation": {
                      "properties": {
                        "required": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "invitation": {
                      "properties": {
                        "required": {
                          "type": "boolean"
                        },
                        "token_ttl": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "password_requirements": {
                      "properties": {
                        "max_length": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_digits": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_length": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_special": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "min_uppercase": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "user_rights": {
                  "properties": {
                    "create_applications": {
                      "type": "boolean"
                    },
                    "create_clients": {
                      "type": "boolean"
                    },
                    "create_gateways": {
                      "type": "boolean"
                    },
                    "create_organizations": {
                      "type": "boolean"
                    },
                    "update_name": {
                      "type": "boolean"
                    },
                    "update_primary_email_address": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "js": {
              "properties": {
                "join_eui_prefixes": {
                  "example": [
                    "70B3D57ED0000000/56"
                  ],
                  "items": {
                    "format": "byte",
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "noc": {
              "properties": {
                "access": {
                  "properties": {
                    "extended": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "ns": {
              "properties": {
                "cooldown_window": {
                  "type": "string"
                },
                "deduplication_window": {
                  "type": "string"
                },
                "dev_addr_prefixes": {
                  "example": [
                    "2600AB00/24"
                  ],
                  "items": {
                    "format": "byte",
                    "type": "string"
                  },
                  "type": "array"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ui": {
              "properties": {
                "branding_base_url": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "description": "Configuration per cluster (by ID).",
        "type": "object"
      },
      "default_cluster": {
        "properties": {
          "ars": {
            "properties": {
              "routing": {
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "as": {
            "properties": {
              "webhooks": {
                "properties": {
                  "queue": {
                    "properties": {
                      "enabled": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "gs": {
            "properties": {
              "mtls_authentication": {
                "properties": {
                  "client_ca_pool": {
                    "description": "PEM encoded pool of X.509 root certificates to trust for verifying the presented TLS client certificate.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "is": {
            "properties": {
              "admin_rights": {
                "properties": {
                  "all": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "application_limits": {
                "properties": {
                  "end_devices": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "email": {
                "properties": {
                  "network": {
                    "properties": {
                      "branding_base_url": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "end_device_picture": {
                "properties": {
                  "disable_upload": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "organization_limits": {
                "properties": {
                  "applications": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "clients": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "gateways": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "profile_picture": {
                "properties": {
                  "disable_upload": {
                    "type": "boolean"
                  },
                  "use_gravatar": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "user_limits": {
                "properties": {
                  "applications": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "clients": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "gateways": {
                    "format": "uint64",
                    "type": "string"
                  },
                  "organizations": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "user_login": {
                "properties": {
                  "disable_credentials_login": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "user_registration": {
                "properties": {
                  "admin_approval": {
                    "properties": {
                      "required": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "contact_info_validation": {
                    "properties": {
                      "required": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "enabled": {
                    "type": "boolean"
                  },
                  "invitation": {
                    "properties": {
                      "required": {
                        "type": "boolean"
                      },
                      "token_ttl": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "password_requirements": {
                    "properties": {
                      "max_length": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_digits": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_length": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_special": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_uppercase": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "user_rights": {
                "properties": {
                  "create_applications": {
                    "type": "boolean"
                  },
                  "create_clients": {
                    "type": "boolean"
                  },
                  "create_gateways": {
                    "type": "boolean"
                  },
                  "create_organizations": {
                    "type": "boolean"
                  },
                  "update_name": {
                    "type": "boolean"
                  },
                  "update_primary_email_address": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "js": {
            "properties": {
              "join_eui_prefixes": {
                "example": [
                  "70B3D57ED0000000/56"
                ],
                "items": {
                  "format": "byte",
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "noc": {
            "properties": {
              "access": {
                "properties": {
                  "extended": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "ns": {
            "properties": {
              "cooldown_window": {
                "type": "string"
              },
              "deduplication_window": {
                "type": "string"
              },
              "dev_addr_prefixes": {
                "example": [
                  "2600AB00/24"
                ],
                "items": {
                  "format": "byte",
                  "type": "string"
                },
                "type": "array"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ui": {
            "properties": {
              "branding_base_url": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pb": {
        "properties": {
          "listed": {
            "description": "Indicates whether the Home Network is publicly listed.",
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "type": "string"
  },
  "ids": {
    "properties": {
      "tenant_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "max_applications": {
    "description": "If set, restricts the maximum number of applications that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_clients": {
    "description": "If set, restricts the maximum number of clients that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_end_devices": {
    "description": "If set, restricts the maximum number of end_devices that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_gateways": {
    "description": "If set, restricts the maximum number of gateways that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_organizations": {
    "description": "If set, restricts the maximum number of organizations that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "max_users": {
    "description": "If set, restricts the maximum number of users that can be created.",
    "format": "uint64",
    "type": "string"
  },
  "name": {
    "type": "string"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/tenants/{tenant_ids.tenant_id}/registry-totals

Expand Collapse

Request Parameters
Field Type Required Description
tenant_ids.tenant_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_end_devices": {
    "format": "uint64",
    "type": "string"
  },
  "applications": {
    "format": "uint64",
    "type": "string"
  },
  "clients": {
    "format": "uint64",
    "type": "string"
  },
  "end_devices": {
    "format": "uint64",
    "type": "string"
  },
  "gateways": {
    "format": "uint64",
    "type": "string"
  },
  "organizations": {
    "format": "uint64",
    "type": "string"
  },
  "users": {
    "format": "uint64",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/tenants/{tenant_id}

Expand Collapse

Request Parameters
Field Type Required Description
tenant_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

TenantAccess

Manage access to tenants.

Expand Collapse

post

/tenants/{tenant_ids.tenant_id}/resend-admin-validation

Expand Collapse

Request Parameters
Field Type Required Description
tenant_ids.tenant_id string true
Request Body
Show JSON Schema
{
  "tenant_ids": {
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/tenants/{tenant_ids.tenant_id}/support-token

EXPERIMENTAL: This service is subject to change.

Expand Collapse

Request Parameters
Field Type Required Description
tenant_ids.tenant_id string true
Request Body
Show JSON Schema
{
  "tenant_ids": {
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "login_token": {
    "type": "string"
  },
  "login_url": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

Tbs

Report metering data to external billing services.

Expand Collapse

post

/tbs/report

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ApplicationRegistry

Manage applications.

Expand Collapse

get

/applications

List applications where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the applications the caller has access to. Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the application fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted applications.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "applications": {
    "items": {
      "description": "Application is the message that defines an Application in the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "application_server_address": {
          "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the application.",
          "type": "string"
        },
        "dev_eui_counter": {
          "format": "int64",
          "type": "integer"
        },
        "end_device_limit": {
          "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "ids": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_server_address": {
          "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "The name of the application.",
          "type": "string"
        },
        "network_server_address": {
          "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/applications/{application.ids.application_id}

Update the application, changing the fields specified by the field mask to the provided values.

Expand Collapse

Request Parameters
Field Type Required Description
application.ids.application_id string true
Request Body
Show JSON Schema
{
  "application": {
    "description": "Application is the message that defines an Application in the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the application.",
        "type": "string"
      },
      "dev_eui_counter": {
        "format": "int64",
        "type": "integer"
      },
      "end_device_limit": {
        "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "ids": {
        "description": "The identifiers of the application. These are public and can be seen by any authenticated user in the network.",
        "title": "The identifiers of the application. These are public and can be seen by any authenticated user in the network.",
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "name": {
        "description": "The name of the application.",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the application fields that should be updated.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the application.",
    "type": "string"
  },
  "dev_eui_counter": {
    "format": "int64",
    "type": "integer"
  },
  "end_device_limit": {
    "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "name": {
    "description": "The name of the application.",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/applications/{application_ids.application_id}

Get the application with the given identifiers, selecting the fields specified in the field mask.

Expand Collapse

More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
application_ids.application_id string true
field_mask string The names of the application fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the application.",
    "type": "string"
  },
  "dev_eui_counter": {
    "format": "int64",
    "type": "integer"
  },
  "end_device_limit": {
    "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "name": {
    "description": "The name of the application.",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/applications/{application_id}

Delete the application.

Expand Collapse

This may not release the application ID for reuse. All end devices must be deleted from the application before it can be deleted.

Request Parameters
Field Type Required Description
application_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/applications/{application_id}/dev-eui

Request DevEUI from the configured address block for a device inside the application.

Expand Collapse

The maximum number of DevEUI's issued per application can be configured.

Request Parameters
Field Type Required Description
application_id string true
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "dev_eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/applications/{application_id}/purge

Purge the application.

Expand Collapse

This will release the application ID for reuse. All end devices must be deleted from the application before it can be deleted. The application owner is responsible for clearing data from any (external) integrations that may store and expose data by application ID

Request Parameters
Field Type Required Description
application_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/applications/{application_id}/restore

Restore a recently deleted application.

Expand Collapse

Deployment configuration may specify if, and for how long after deletion, entities can be restored.

Request Parameters
Field Type Required Description
application_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/organizations/{collaborator.organization_ids.organization_id}/applications

List applications where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the applications the caller has access to. Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the application fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted applications.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "applications": {
    "items": {
      "description": "Application is the message that defines an Application in the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "application_server_address": {
          "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the application.",
          "type": "string"
        },
        "dev_eui_counter": {
          "format": "int64",
          "type": "integer"
        },
        "end_device_limit": {
          "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "ids": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_server_address": {
          "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "The name of the application.",
          "type": "string"
        },
        "network_server_address": {
          "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/organizations/{collaborator.organization_ids.organization_id}/applications

Create a new application.

Expand Collapse

This also sets the given organization or user as first collaborator with all possible rights.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
Request Body
Show JSON Schema
{
  "application": {
    "description": "Application is the message that defines an Application in the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the application.",
        "type": "string"
      },
      "dev_eui_counter": {
        "format": "int64",
        "type": "integer"
      },
      "end_device_limit": {
        "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "name": {
        "description": "The name of the application.",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "collaborator": {
    "description": "Collaborator to grant all rights on the newly created application.",
    "properties": {
      "organization_ids": {
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "title": "Collaborator to grant all rights on the newly created application.",
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the application.",
    "type": "string"
  },
  "dev_eui_counter": {
    "format": "int64",
    "type": "integer"
  },
  "end_device_limit": {
    "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "name": {
    "description": "The name of the application.",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/users/{collaborator.user_ids.user_id}/applications

List applications where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the applications the caller has access to. Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the application fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted applications.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "applications": {
    "items": {
      "description": "Application is the message that defines an Application in the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "application_server_address": {
          "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the application.",
          "type": "string"
        },
        "dev_eui_counter": {
          "format": "int64",
          "type": "integer"
        },
        "end_device_limit": {
          "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "ids": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_server_address": {
          "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "The name of the application.",
          "type": "string"
        },
        "network_server_address": {
          "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users/{collaborator.user_ids.user_id}/applications

Create a new application.

Expand Collapse

This also sets the given organization or user as first collaborator with all possible rights.

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "application": {
    "description": "Application is the message that defines an Application in the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the application.",
        "type": "string"
      },
      "dev_eui_counter": {
        "format": "int64",
        "type": "integer"
      },
      "end_device_limit": {
        "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "name": {
        "description": "The name of the application.",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "collaborator": {
    "description": "Collaborator to grant all rights on the newly created application.",
    "properties": {
      "organization_ids": {
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "title": "Collaborator to grant all rights on the newly created application.",
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this application. Typically used for organizing applications or for storing integration-specific data.",
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this application. Typically used to indicate who to contact with technical/security questions about the application.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the application was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the application was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the application.",
    "type": "string"
  },
  "dev_eui_counter": {
    "format": "int64",
    "type": "integer"
  },
  "end_device_limit": {
    "description": "The limit of the number of end devices that can be registered for this application.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "name": {
    "description": "The name of the application.",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this application is supposed to be registered.\nIf set, this fields indicates where end devices for this application should be registered.\n\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the application was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ApplicationAccess

Manage access to applications.

Expand Collapse

get

/applications/{application_ids.application_id}/api-keys

List the API keys for this application.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
order string Order the results by this field path. Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "api_keys": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "expires_at": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
          "type": "string"
        },
        "key": {
          "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
          "type": "string"
        },
        "name": {
          "description": "User-defined (friendly) name for the API key.",
          "type": "string"
        },
        "rights": {
          "description": "Rights that are granted to this API key.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/applications/{application_ids.application_id}/api-keys

Create an API key scoped to this application.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "name": {
    "type": "string"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/applications/{application_ids.application_id}/api-keys/{api_key.id}

Update the rights of an API key of the application.

Expand Collapse

This method can also be used to delete the API key, by giving it no rights. The caller is required to have all assigned or/and removed rights.

Request Parameters
Field Type Required Description
application_ids.application_id string true
api_key.id string true Immutable and unique public identifier for the API key. Generated by the Access Server.
Request Body
Show JSON Schema
{
  "api_key": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "expires_at": {
        "format": "date-time",
        "type": "string"
      },
      "key": {
        "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
        "type": "string"
      },
      "name": {
        "description": "User-defined (friendly) name for the API key.",
        "type": "string"
      },
      "rights": {
        "description": "Rights that are granted to this API key.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "application_ids": {
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the api key fields that should be updated.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/applications/{application_ids.application_id}/api-keys/{key_id}

Delete a single API key of this application.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
key_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/applications/{application_ids.application_id}/api-keys/{key_id}

Get a single API key of this application.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
key_id string true Unique public identifier for the API key.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/applications/{application_ids.application_id}/collaborator/organization/{collaborator.organization_ids.organization_id}

Get the rights of a collaborator (member) of the application.

Expand Collapse

Pseudo-rights in the response (such as the "_ALL" right) are not expanded.

Request Parameters
Field Type Required Description
application_ids.application_id string true
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "ids": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/applications/{application_ids.application_id}/collaborator/organization/{collaborator_ids.organization_ids.organization_id}

DeleteCollaborator removes a collaborator from an application.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
collaborator_ids.organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator_ids.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/applications/{application_ids.application_id}/collaborator/user/{collaborator.user_ids.user_id}

Get the rights of a collaborator (member) of the application.

Expand Collapse

Pseudo-rights in the response (such as the "_ALL" right) are not expanded.

Request Parameters
Field Type Required Description
application_ids.application_id string true
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "ids": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/applications/{application_ids.application_id}/collaborator/user/{collaborator_ids.user_ids.user_id}

DeleteCollaborator removes a collaborator from an application.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
collaborator_ids.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator_ids.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/applications/{application_ids.application_id}/collaborators

List the collaborators on this application.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "collaborators": {
    "items": {
      "properties": {
        "ids": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "rights": {
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/applications/{application_ids.application_id}/collaborators

Set the rights of a collaborator (member) on the application.

Expand Collapse

This method can also be used to delete the collaborator, by giving them no rights. The caller is required to have all assigned or/and removed rights.

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "collaborator": {
    "properties": {
      "ids": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "rights": {
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/applications/{application_id}/rights

List the rights the caller has on this application.

Expand Collapse

Request Parameters
Field Type Required Description
application_id string true
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

As

Manage an Application Server.

Expand Collapse

get

/as/applications/{application_ids.application_id}/link

Get a link configuration from the Application Server to Network Server.

Expand Collapse

This only contains the configuration. Use GetLinkStats to view statistics and any link errors.

Request Parameters
Field Type Required Description
application_ids.application_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "default_formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nLeave empty for the using the Application Server's default setting.",
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/as/applications/{application_ids.application_id}/link

Set a link configuration from the Application Server a Network Server.

Expand Collapse

This call returns immediately after setting the link configuration; it does not wait for a link to establish. To get link statistics or errors, use GetLinkStats. Note that there can only be one Application Server instance linked to a Network Server for a given application at a time.

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "link": {
    "properties": {
      "default_formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nLeave empty for the using the Application Server's default setting.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "default_formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nLeave empty for the using the Application Server's default setting.",
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/as/applications/{application_id}/link

Delete the link between the Application Server and Network Server for the specified application.

Expand Collapse

Request Parameters
Field Type Required Description
application_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{application_id}/link/stats

GetLinkStats returns the link statistics.

Expand Collapse

This call returns a NotFound error code if there is no link for the given application identifiers. This call returns the error code of the link error if linking to a Network Server failed.

Request Parameters
Field Type Required Description
application_id string true
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "downlink_count": {
    "description": "Number of downlink messages forwarded.",
    "format": "uint64",
    "type": "string"
  },
  "last_downlink_forwarded_at": {
    "description": "Timestamp when the last downlink message has been forwarded to a Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_up_received_at": {
    "description": "Timestamp when the last upstream message has been received from a Network Server.\nThis can be a join-accept, uplink message or downlink message event.",
    "format": "date-time",
    "type": "string"
  },
  "linked_at": {
    "format": "date-time",
    "type": "string"
  },
  "network_server_address": {
    "type": "string"
  },
  "up_count": {
    "description": "Number of upstream messages received.",
    "format": "uint64",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/configuration

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "configuration": {
    "description": "Application Server configuration.",
    "properties": {
      "pubsub": {
        "properties": {
          "providers": {
            "properties": {
              "mqtt": {
                "default": "ENABLED",
                "description": " - ENABLED: No restrictions are in place.\n - WARNING: Warnings are being emitted that the provider will be deprecated in the future.\n - DISABLED: New integrations cannot be set up, and old ones do not start.",
                "enum": [
                  "ENABLED",
                  "WARNING",
                  "DISABLED"
                ],
                "type": "string"
              },
              "nats": {
                "default": "ENABLED",
                "description": " - ENABLED: No restrictions are in place.\n - WARNING: Warnings are being emitted that the provider will be deprecated in the future.\n - DISABLED: New integrations cannot be set up, and old ones do not start.",
                "enum": [
                  "ENABLED",
                  "WARNING",
                  "DISABLED"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "webhooks": {
        "properties": {
          "queue": {
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "retry": {
                "properties": {
                  "base_delay": {
                    "type": "string"
                  },
                  "delay_factor": {
                    "format": "double",
                    "type": "number"
                  },
                  "jitter_factor": {
                    "format": "double",
                    "type": "number"
                  },
                  "max_attempts": {
                    "format": "int64",
                    "type": "string"
                  },
                  "max_delay": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "unhealthy_attempts_threshold": {
            "format": "int64",
            "type": "string"
          },
          "unhealthy_retry_interval": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

NsAs

The NsAs service is used by The Things Stack Network Servers to interact with The Things Stack Application Servers. This is an inter-component service and is not meant for end users.

Expand Collapse

AppAs

Connect and manage applications or integrations to an Application Server.

Expand Collapse

get

/as/applications/{application_ids.application_id}/devices/{device_id}/down

List the items currently in the downlink queue.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_id string true
dev_eui string The LoRaWAN DevEUI.
join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "downlinks": {
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{application_id}/mqtt-connection-info

Get connection information to connect an MQTT client.

Expand Collapse

Request Parameters
Field Type Required Description
application_id string true
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "public_address": {
    "description": "The public listen address of the frontend.",
    "type": "string"
  },
  "public_tls_address": {
    "description": "The public listen address of the TLS frontend.",
    "type": "string"
  },
  "username": {
    "description": "The username to be used for authentication.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/decode

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "downlink": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "class_b_c": {
        "properties": {
          "absolute_time": {
            "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
            "format": "date-time",
            "type": "string"
          },
          "gateways": {
            "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
            "items": {
              "properties": {
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "group_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "confirmed": {
        "type": "boolean"
      },
      "confirmed_retry": {
        "properties": {
          "attempt": {
            "description": "The number of attempted confirmed downlink acknowledgements.",
            "format": "int64",
            "type": "integer"
          },
          "max_attempts": {
            "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
        "format": "byte",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "priority": {
        "default": "LOWEST",
        "enum": [
          "LOWEST",
          "LOW",
          "BELOW_NORMAL",
          "NORMAL",
          "ABOVE_NORMAL",
          "HIGH",
          "HIGHEST"
        ],
        "type": "string"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this downlink.",
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "formatter": {
    "default": "FORMATTER_NONE",
    "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
    "enum": [
      "FORMATTER_NONE",
      "FORMATTER_REPOSITORY",
      "FORMATTER_GRPC_SERVICE",
      "FORMATTER_JAVASCRIPT",
      "FORMATTER_CAYENNELPP"
    ],
    "type": "string"
  },
  "parameter": {
    "type": "string"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "downlink": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "class_b_c": {
        "properties": {
          "absolute_time": {
            "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
            "format": "date-time",
            "type": "string"
          },
          "gateways": {
            "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
            "items": {
              "properties": {
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "group_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "confirmed": {
        "type": "boolean"
      },
      "confirmed_retry": {
        "properties": {
          "attempt": {
            "description": "The number of attempted confirmed downlink acknowledgements.",
            "format": "int64",
            "type": "integer"
          },
          "max_attempts": {
            "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
        "format": "byte",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "priority": {
        "default": "LOWEST",
        "enum": [
          "LOWEST",
          "LOW",
          "BELOW_NORMAL",
          "NORMAL",
          "ABOVE_NORMAL",
          "HIGH",
          "HIGHEST"
        ],
        "type": "string"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this downlink.",
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/encode

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "downlink": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "class_b_c": {
        "properties": {
          "absolute_time": {
            "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
            "format": "date-time",
            "type": "string"
          },
          "gateways": {
            "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
            "items": {
              "properties": {
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "group_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "confirmed": {
        "type": "boolean"
      },
      "confirmed_retry": {
        "properties": {
          "attempt": {
            "description": "The number of attempted confirmed downlink acknowledgements.",
            "format": "int64",
            "type": "integer"
          },
          "max_attempts": {
            "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
        "format": "byte",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "priority": {
        "default": "LOWEST",
        "enum": [
          "LOWEST",
          "LOW",
          "BELOW_NORMAL",
          "NORMAL",
          "ABOVE_NORMAL",
          "HIGH",
          "HIGHEST"
        ],
        "type": "string"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this downlink.",
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "formatter": {
    "default": "FORMATTER_NONE",
    "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
    "enum": [
      "FORMATTER_NONE",
      "FORMATTER_REPOSITORY",
      "FORMATTER_GRPC_SERVICE",
      "FORMATTER_JAVASCRIPT",
      "FORMATTER_CAYENNELPP"
    ],
    "type": "string"
  },
  "parameter": {
    "type": "string"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "downlink": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "class_b_c": {
        "properties": {
          "absolute_time": {
            "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
            "format": "date-time",
            "type": "string"
          },
          "gateways": {
            "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
            "items": {
              "properties": {
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "group_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "confirmed": {
        "type": "boolean"
      },
      "confirmed_retry": {
        "properties": {
          "attempt": {
            "description": "The number of attempted confirmed downlink acknowledgements.",
            "format": "int64",
            "type": "integer"
          },
          "max_attempts": {
            "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
        "format": "byte",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "priority": {
        "default": "LOWEST",
        "enum": [
          "LOWEST",
          "LOW",
          "BELOW_NORMAL",
          "NORMAL",
          "ABOVE_NORMAL",
          "HIGH",
          "HIGHEST"
        ],
        "type": "string"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this downlink.",
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/push

Push downlink messages to the end of the downlink queue.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "downlinks": {
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/down/replace

Replace the entire downlink queue with the specified messages.

Expand Collapse

This can also be used to empty the queue by specifying no messages.

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "downlinks": {
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/decode

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "formatter": {
    "default": "FORMATTER_NONE",
    "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
    "enum": [
      "FORMATTER_NONE",
      "FORMATTER_REPOSITORY",
      "FORMATTER_GRPC_SERVICE",
      "FORMATTER_JAVASCRIPT",
      "FORMATTER_CAYENNELPP"
    ],
    "type": "string"
  },
  "parameter": {
    "type": "string"
  },
  "uplink": {
    "properties": {
      "app_s_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "confirmed": {
        "description": "Indicates whether the end device used confirmed data uplink.",
        "type": "boolean"
      },
      "consumed_airtime": {
        "description": "Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings.",
        "type": "string"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while decoding the frm_payload.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "description": "LoRaWAN FCntUp of the uplink message.",
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "description": "LoRaWAN FPort of the uplink message.",
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the uplink message.\nThe payload is still encrypted if the skip_payload_crypto field of the EndDevice\nis true, which is indicated by the presence of the app_s_key field.",
        "format": "byte",
        "type": "string"
      },
      "last_a_f_cnt_down": {
        "description": "The last AFCntDown of the current session.\nThis field is only present if the skip_payload_crypto field of the EndDevice\nis true.\nCan be used with app_s_key to encrypt downlink payloads.",
        "format": "int64",
        "type": "integer"
      },
      "last_battery_percentage": {
        "properties": {
          "f_cnt": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "received_at": {
            "description": "Time when last DevStatus MAC command was received.",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "The battery percentage of the end device.\nThe value is defined in the [0, 100] interval.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "normalized_payload": {
        "description": "The normalized frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).\nIf the message processor is a custom script, there is no uplink normalizer script and the decoded output is valid\nnormalized payload, this field contains the decoded payload.",
        "items": {
          "type": "object"
        },
        "type": "array"
      },
      "normalized_payload_warnings": {
        "description": "Warnings generated by the message processor while normalizing the decoded payload.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "packet_error_rate": {
        "description": "Packet error rate of the recent uplinks in the current session.\nCalculated by the Network Server. The value is defined in the [0, 1] interval.",
        "format": "float",
        "type": "number"
      },
      "received_at": {
        "description": "Server time when the Network Server received the message.",
        "format": "date-time",
        "type": "string"
      },
      "rx_metadata": {
        "description": "A list of metadata for each antenna of each gateway that received this message.",
        "items": {
          "description": "Contains metadata for a received message. Each antenna that receives\na message corresponds to one RxMetadata.",
          "properties": {
            "advanced": {
              "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
              "type": "object"
            },
            "antenna_index": {
              "format": "int64",
              "type": "integer"
            },
            "channel_index": {
              "description": "Index of the gateway channel that received the message.",
              "format": "int64",
              "type": "integer"
            },
            "channel_rssi": {
              "description": "Received signal strength indicator of the channel (dBm).",
              "format": "float",
              "type": "number"
            },
            "downlink_path_constraint": {
              "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
              "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
              "enum": [
                "DOWNLINK_PATH_CONSTRAINT_NONE",
                "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                "DOWNLINK_PATH_CONSTRAINT_NEVER"
              ],
              "type": "string"
            },
            "encrypted_fine_timestamp": {
              "description": "Encrypted gateway's internal fine timestamp when the Rx finished (nanoseconds).",
              "format": "byte",
              "type": "string"
            },
            "encrypted_fine_timestamp_key_id": {
              "type": "string"
            },
            "fine_timestamp": {
              "description": "Gateway's internal fine timestamp when the Rx finished (nanoseconds).",
              "format": "uint64",
              "type": "string"
            },
            "frequency_drift": {
              "description": "Frequency drift in Hz between start and end of an LR-FHSS packet (signed).",
              "format": "int32",
              "type": "integer"
            },
            "frequency_offset": {
              "description": "Frequency offset (Hz).",
              "format": "int64",
              "type": "string"
            },
            "gateway_ids": {
              "properties": {
                "eui": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "gateway_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "gps_time": {
              "description": "Timestamp at the end of the transmission, provided by the gateway.\nGuaranteed to be based on a GPS PPS signal, with an accuracy of 1 millisecond.",
              "format": "date-time",
              "type": "string"
            },
            "hopping_width": {
              "description": "Hopping width; a number describing the number of steps of the LR-FHSS grid.",
              "format": "int64",
              "type": "integer"
            },
            "location": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "packet_broker": {
              "properties": {
                "forwarder_cluster_id": {
                  "description": "Forwarder Cluster ID of the Packet Broker Forwarder.",
                  "type": "string"
                },
                "forwarder_gateway_eui": {
                  "description": "Forwarder gateway EUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "forwarder_gateway_id": {
                  "description": "Forwarder gateway ID.",
                  "type": "string"
                },
                "forwarder_net_id": {
                  "description": "LoRa Alliance NetID of the Packet Broker Forwarder Member.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "forwarder_tenant_id": {
                  "description": "Tenant ID managed by the Packet Broker Forwarder Member.",
                  "type": "string"
                },
                "home_network_cluster_id": {
                  "description": "Home Network Cluster ID of the Packet Broker Home Network.",
                  "type": "string"
                },
                "home_network_net_id": {
                  "description": "LoRa Alliance NetID of the Packet Broker Home Network Member.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "home_network_tenant_id": {
                  "description": "Tenant ID managed by the Packet Broker Home Network Member.\nThis value is empty if it cannot be determined by the Packet Broker Router.",
                  "type": "string"
                },
                "hops": {
                  "description": "Hops that the message passed. Each Packet Broker Router service appends an entry.",
                  "items": {
                    "properties": {
                      "received_at": {
                        "description": "Time when the service received the message.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "receiver_agent": {
                        "description": "Receiver agent.",
                        "type": "string"
                      },
                      "receiver_name": {
                        "description": "Receiver of the message.",
                        "type": "string"
                      },
                      "sender_address": {
                        "description": "Sender IP address or host name.",
                        "type": "string"
                      },
                      "sender_name": {
                        "description": "Sender of the message, typically the authorized client identifier.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "message_id": {
                  "description": "Message identifier generated by Packet Broker Router.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "received_at": {
              "description": "Timestamp at which the Gateway Server has received the message.",
              "format": "date-time",
              "type": "string"
            },
            "relay": {
              "properties": {
                "device_id": {
                  "description": "End device identifiers of the relay.",
                  "type": "string"
                },
                "wor_channel": {
                  "default": "RELAY_WOR_CHANNEL_DEFAULT",
                  "enum": [
                    "RELAY_WOR_CHANNEL_DEFAULT",
                    "RELAY_WOR_CHANNEL_SECONDARY"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rssi": {
              "description": "Received signal strength indicator (dBm).\nThis value equals `channel_rssi`.",
              "format": "float",
              "type": "number"
            },
            "rssi_standard_deviation": {
              "description": "Standard deviation of the RSSI during preamble.",
              "format": "float",
              "type": "number"
            },
            "signal_rssi": {
              "description": "Received signal strength indicator of the signal (dBm).",
              "format": "float",
              "type": "number"
            },
            "snr": {
              "description": "Signal-to-noise ratio (dB).",
              "format": "float",
              "type": "number"
            },
            "time": {
              "description": "Timestamp at the end of the transmission, provided by the gateway. The accuracy is undefined.",
              "format": "date-time",
              "type": "string"
            },
            "timestamp": {
              "description": "Gateway concentrator timestamp when the Rx finished (microseconds).",
              "format": "int64",
              "type": "integer"
            },
            "uplink_token": {
              "description": "Uplink token to be included in the Tx request in class A downlink; injected by gateway, Gateway Server or fNS.",
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this uplink.",
        "format": "byte",
        "type": "string"
      },
      "settings": {
        "description": "TxSettings contains the settings for a transmission.\nThis message is used on both uplink and downlink.\nOn downlink, this is a scheduled transmission.",
        "properties": {
          "concentrator_timestamp": {
            "description": "Concentrator timestamp for the downlink as calculated by the Gateway Server scheduler.\nThis value takes into account necessary offsets such as the RTT (Round Trip Time) and TOA (Time Of Arrival).\nThis field is set and used only by the Gateway Server.",
            "format": "int64",
            "type": "string"
          },
          "data_rate": {
            "properties": {
              "fsk": {
                "properties": {
                  "bit_rate": {
                    "description": "Bit rate (bps).",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "lora": {
                "properties": {
                  "bandwidth": {
                    "description": "Bandwidth (Hz).",
                    "format": "int64",
                    "type": "integer"
                  },
                  "coding_rate": {
                    "type": "string"
                  },
                  "spreading_factor": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "lrfhss": {
                "properties": {
                  "coding_rate": {
                    "type": "string"
                  },
                  "modulation_type": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "operating_channel_width": {
                    "description": "Operating Channel Width (Hz).",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "downlink": {
            "description": "Transmission settings for downlink.",
            "properties": {
              "antenna_index": {
                "description": "Index of the antenna on which the uplink was received and/or downlink must be sent.",
                "format": "int64",
                "type": "integer"
              },
              "invert_polarization": {
                "description": "Invert LoRa polarization; false for LoRaWAN uplink, true for downlink.",
                "type": "boolean"
              },
              "tx_power": {
                "description": "Transmission power (dBm). Only on downlink.",
                "format": "float",
                "type": "number"
              }
            },
            "type": "object"
          },
          "enable_crc": {
            "description": "Send a CRC in the packet; only on uplink; on downlink, CRC should not be enabled.",
            "type": "boolean"
          },
          "frequency": {
            "description": "Frequency (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "time": {
            "description": "Time of the gateway when the uplink message was received, or when the downlink message should be transmitted.\nFor downlink, this requires the gateway to have GPS time synchronization.",
            "format": "date-time",
            "type": "string"
          },
          "timestamp": {
            "description": "Timestamp of the gateway concentrator when the uplink message was received, or when the downlink message should be transmitted (microseconds).\nOn downlink, set timestamp to 0 and time to null to use immediate scheduling.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "uplink": {
    "properties": {
      "app_s_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "confirmed": {
        "description": "Indicates whether the end device used confirmed data uplink.",
        "type": "boolean"
      },
      "consumed_airtime": {
        "description": "Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings.",
        "type": "string"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while decoding the frm_payload.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "description": "LoRaWAN FCntUp of the uplink message.",
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "description": "LoRaWAN FPort of the uplink message.",
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the uplink message.\nThe payload is still encrypted if the skip_payload_crypto field of the EndDevice\nis true, which is indicated by the presence of the app_s_key field.",
        "format": "byte",
        "type": "string"
      },
      "last_a_f_cnt_down": {
        "description": "The last AFCntDown of the current session.\nThis field is only present if the skip_payload_crypto field of the EndDevice\nis true.\nCan be used with app_s_key to encrypt downlink payloads.",
        "format": "int64",
        "type": "integer"
      },
      "last_battery_percentage": {
        "properties": {
          "f_cnt": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "received_at": {
            "description": "Time when last DevStatus MAC command was received.",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "The battery percentage of the end device.\nThe value is defined in the [0, 100] interval.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "normalized_payload": {
        "description": "The normalized frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).\nIf the message processor is a custom script, there is no uplink normalizer script and the decoded output is valid\nnormalized payload, this field contains the decoded payload.",
        "items": {
          "type": "object"
        },
        "type": "array"
      },
      "normalized_payload_warnings": {
        "description": "Warnings generated by the message processor while normalizing the decoded payload.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "packet_error_rate": {
        "description": "Packet error rate of the recent uplinks in the current session.\nCalculated by the Network Server. The value is defined in the [0, 1] interval.",
        "format": "float",
        "type": "number"
      },
      "received_at": {
        "description": "Server time when the Network Server received the message.",
        "format": "date-time",
        "type": "string"
      },
      "rx_metadata": {
        "description": "A list of metadata for each antenna of each gateway that received this message.",
        "items": {
          "description": "Contains metadata for a received message. Each antenna that receives\na message corresponds to one RxMetadata.",
          "properties": {
            "advanced": {
              "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
              "type": "object"
            },
            "antenna_index": {
              "format": "int64",
              "type": "integer"
            },
            "channel_index": {
              "description": "Index of the gateway channel that received the message.",
              "format": "int64",
              "type": "integer"
            },
            "channel_rssi": {
              "description": "Received signal strength indicator of the channel (dBm).",
              "format": "float",
              "type": "number"
            },
            "downlink_path_constraint": {
              "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
              "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
              "enum": [
                "DOWNLINK_PATH_CONSTRAINT_NONE",
                "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                "DOWNLINK_PATH_CONSTRAINT_NEVER"
              ],
              "type": "string"
            },
            "encrypted_fine_timestamp": {
              "description": "Encrypted gateway's internal fine timestamp when the Rx finished (nanoseconds).",
              "format": "byte",
              "type": "string"
            },
            "encrypted_fine_timestamp_key_id": {
              "type": "string"
            },
            "fine_timestamp": {
              "description": "Gateway's internal fine timestamp when the Rx finished (nanoseconds).",
              "format": "uint64",
              "type": "string"
            },
            "frequency_drift": {
              "description": "Frequency drift in Hz between start and end of an LR-FHSS packet (signed).",
              "format": "int32",
              "type": "integer"
            },
            "frequency_offset": {
              "description": "Frequency offset (Hz).",
              "format": "int64",
              "type": "string"
            },
            "gateway_ids": {
              "properties": {
                "eui": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "gateway_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "gps_time": {
              "description": "Timestamp at the end of the transmission, provided by the gateway.\nGuaranteed to be based on a GPS PPS signal, with an accuracy of 1 millisecond.",
              "format": "date-time",
              "type": "string"
            },
            "hopping_width": {
              "description": "Hopping width; a number describing the number of steps of the LR-FHSS grid.",
              "format": "int64",
              "type": "integer"
            },
            "location": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "packet_broker": {
              "properties": {
                "forwarder_cluster_id": {
                  "description": "Forwarder Cluster ID of the Packet Broker Forwarder.",
                  "type": "string"
                },
                "forwarder_gateway_eui": {
                  "description": "Forwarder gateway EUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "forwarder_gateway_id": {
                  "description": "Forwarder gateway ID.",
                  "type": "string"
                },
                "forwarder_net_id": {
                  "description": "LoRa Alliance NetID of the Packet Broker Forwarder Member.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "forwarder_tenant_id": {
                  "description": "Tenant ID managed by the Packet Broker Forwarder Member.",
                  "type": "string"
                },
                "home_network_cluster_id": {
                  "description": "Home Network Cluster ID of the Packet Broker Home Network.",
                  "type": "string"
                },
                "home_network_net_id": {
                  "description": "LoRa Alliance NetID of the Packet Broker Home Network Member.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "home_network_tenant_id": {
                  "description": "Tenant ID managed by the Packet Broker Home Network Member.\nThis value is empty if it cannot be determined by the Packet Broker Router.",
                  "type": "string"
                },
                "hops": {
                  "description": "Hops that the message passed. Each Packet Broker Router service appends an entry.",
                  "items": {
                    "properties": {
                      "received_at": {
                        "description": "Time when the service received the message.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "receiver_agent": {
                        "description": "Receiver agent.",
                        "type": "string"
                      },
                      "receiver_name": {
                        "description": "Receiver of the message.",
                        "type": "string"
                      },
                      "sender_address": {
                        "description": "Sender IP address or host name.",
                        "type": "string"
                      },
                      "sender_name": {
                        "description": "Sender of the message, typically the authorized client identifier.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "message_id": {
                  "description": "Message identifier generated by Packet Broker Router.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "received_at": {
              "description": "Timestamp at which the Gateway Server has received the message.",
              "format": "date-time",
              "type": "string"
            },
            "relay": {
              "properties": {
                "device_id": {
                  "description": "End device identifiers of the relay.",
                  "type": "string"
                },
                "wor_channel": {
                  "default": "RELAY_WOR_CHANNEL_DEFAULT",
                  "enum": [
                    "RELAY_WOR_CHANNEL_DEFAULT",
                    "RELAY_WOR_CHANNEL_SECONDARY"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rssi": {
              "description": "Received signal strength indicator (dBm).\nThis value equals `channel_rssi`.",
              "format": "float",
              "type": "number"
            },
            "rssi_standard_deviation": {
              "description": "Standard deviation of the RSSI during preamble.",
              "format": "float",
              "type": "number"
            },
            "signal_rssi": {
              "description": "Received signal strength indicator of the signal (dBm).",
              "format": "float",
              "type": "number"
            },
            "snr": {
              "description": "Signal-to-noise ratio (dB).",
              "format": "float",
              "type": "number"
            },
            "time": {
              "description": "Timestamp at the end of the transmission, provided by the gateway. The accuracy is undefined.",
              "format": "date-time",
              "type": "string"
            },
            "timestamp": {
              "description": "Gateway concentrator timestamp when the Rx finished (microseconds).",
              "format": "int64",
              "type": "integer"
            },
            "uplink_token": {
              "description": "Uplink token to be included in the Tx request in class A downlink; injected by gateway, Gateway Server or fNS.",
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this uplink.",
        "format": "byte",
        "type": "string"
      },
      "settings": {
        "description": "TxSettings contains the settings for a transmission.\nThis message is used on both uplink and downlink.\nOn downlink, this is a scheduled transmission.",
        "properties": {
          "concentrator_timestamp": {
            "description": "Concentrator timestamp for the downlink as calculated by the Gateway Server scheduler.\nThis value takes into account necessary offsets such as the RTT (Round Trip Time) and TOA (Time Of Arrival).\nThis field is set and used only by the Gateway Server.",
            "format": "int64",
            "type": "string"
          },
          "data_rate": {
            "properties": {
              "fsk": {
                "properties": {
                  "bit_rate": {
                    "description": "Bit rate (bps).",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "lora": {
                "properties": {
                  "bandwidth": {
                    "description": "Bandwidth (Hz).",
                    "format": "int64",
                    "type": "integer"
                  },
                  "coding_rate": {
                    "type": "string"
                  },
                  "spreading_factor": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "lrfhss": {
                "properties": {
                  "coding_rate": {
                    "type": "string"
                  },
                  "modulation_type": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "operating_channel_width": {
                    "description": "Operating Channel Width (Hz).",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "downlink": {
            "description": "Transmission settings for downlink.",
            "properties": {
              "antenna_index": {
                "description": "Index of the antenna on which the uplink was received and/or downlink must be sent.",
                "format": "int64",
                "type": "integer"
              },
              "invert_polarization": {
                "description": "Invert LoRa polarization; false for LoRaWAN uplink, true for downlink.",
                "type": "boolean"
              },
              "tx_power": {
                "description": "Transmission power (dBm). Only on downlink.",
                "format": "float",
                "type": "number"
              }
            },
            "type": "object"
          },
          "enable_crc": {
            "description": "Send a CRC in the packet; only on uplink; on downlink, CRC should not be enabled.",
            "type": "boolean"
          },
          "frequency": {
            "description": "Frequency (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "time": {
            "description": "Time of the gateway when the uplink message was received, or when the downlink message should be transmitted.\nFor downlink, this requires the gateway to have GPS time synchronization.",
            "format": "date-time",
            "type": "string"
          },
          "timestamp": {
            "description": "Timestamp of the gateway concentrator when the uplink message was received, or when the downlink message should be transmitted (microseconds).\nOn downlink, set timestamp to 0 and time to null to use immediate scheduling.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/up/simulate

Simulate an upstream message.

Expand Collapse

This can be used to test integrations.

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "correlation_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "downlink_ack": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "class_b_c": {
        "properties": {
          "absolute_time": {
            "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
            "format": "date-time",
            "type": "string"
          },
          "gateways": {
            "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
            "items": {
              "properties": {
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "group_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "confirmed": {
        "type": "boolean"
      },
      "confirmed_retry": {
        "properties": {
          "attempt": {
            "description": "The number of attempted confirmed downlink acknowledgements.",
            "format": "int64",
            "type": "integer"
          },
          "max_attempts": {
            "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
        "format": "byte",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "priority": {
        "default": "LOWEST",
        "enum": [
          "LOWEST",
          "LOW",
          "BELOW_NORMAL",
          "NORMAL",
          "ABOVE_NORMAL",
          "HIGH",
          "HIGHEST"
        ],
        "type": "string"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this downlink.",
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "downlink_failed": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "error": {
        "$ref": "#/definitions/v3ErrorDetails"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "downlink_nack": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "class_b_c": {
        "properties": {
          "absolute_time": {
            "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
            "format": "date-time",
            "type": "string"
          },
          "gateways": {
            "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
            "items": {
              "properties": {
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "group_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "confirmed": {
        "type": "boolean"
      },
      "confirmed_retry": {
        "properties": {
          "attempt": {
            "description": "The number of attempted confirmed downlink acknowledgements.",
            "format": "int64",
            "type": "integer"
          },
          "max_attempts": {
            "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
        "format": "byte",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "priority": {
        "default": "LOWEST",
        "enum": [
          "LOWEST",
          "LOW",
          "BELOW_NORMAL",
          "NORMAL",
          "ABOVE_NORMAL",
          "HIGH",
          "HIGHEST"
        ],
        "type": "string"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this downlink.",
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "downlink_queue_invalidated": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "downlinks": {
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "last_f_cnt_down": {
        "format": "int64",
        "type": "integer"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "session_key_id": {
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "downlink_queued": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "class_b_c": {
        "properties": {
          "absolute_time": {
            "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
            "format": "date-time",
            "type": "string"
          },
          "gateways": {
            "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
            "items": {
              "properties": {
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "group_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "confirmed": {
        "type": "boolean"
      },
      "confirmed_retry": {
        "properties": {
          "attempt": {
            "description": "The number of attempted confirmed downlink acknowledgements.",
            "format": "int64",
            "type": "integer"
          },
          "max_attempts": {
            "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
        "format": "byte",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "priority": {
        "default": "LOWEST",
        "enum": [
          "LOWEST",
          "LOW",
          "BELOW_NORMAL",
          "NORMAL",
          "ABOVE_NORMAL",
          "HIGH",
          "HIGHEST"
        ],
        "type": "string"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this downlink.",
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "downlink_sent": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "class_b_c": {
        "properties": {
          "absolute_time": {
            "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
            "format": "date-time",
            "type": "string"
          },
          "gateways": {
            "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
            "items": {
              "properties": {
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "group_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "confirmed": {
        "type": "boolean"
      },
      "confirmed_retry": {
        "properties": {
          "attempt": {
            "description": "The number of attempted confirmed downlink acknowledgements.",
            "format": "int64",
            "type": "integer"
          },
          "max_attempts": {
            "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
        "format": "byte",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "priority": {
        "default": "LOWEST",
        "enum": [
          "LOWEST",
          "LOW",
          "BELOW_NORMAL",
          "NORMAL",
          "ABOVE_NORMAL",
          "HIGH",
          "HIGHEST"
        ],
        "type": "string"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this downlink.",
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_accept": {
    "properties": {
      "app_s_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "invalidated_downlinks": {
        "description": "Downlink messages in the queue that got invalidated because of the session change.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "description": "Indicates whether the security context refers to the pending session, i.e. when this join-accept is an answer to a\nrejoin-request.",
        "type": "boolean"
      },
      "received_at": {
        "description": "Server time when the Network Server received the message.",
        "format": "date-time",
        "type": "string"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys negotiated in this join.",
        "format": "byte",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "location_solved": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "location": {
        "properties": {
          "accuracy": {
            "description": "The accuracy of the location (meters).",
            "format": "int32",
            "type": "integer"
          },
          "altitude": {
            "description": "The altitude (meters), where 0 is the mean sea level.",
            "format": "int32",
            "type": "integer"
          },
          "latitude": {
            "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
            "format": "double",
            "type": "number"
          },
          "longitude": {
            "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
            "format": "double",
            "type": "number"
          },
          "source": {
            "default": "SOURCE_UNKNOWN",
            "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
            "enum": [
              "SOURCE_UNKNOWN",
              "SOURCE_GPS",
              "SOURCE_REGISTRY",
              "SOURCE_IP_GEOLOCATION",
              "SOURCE_WIFI_RSSI_GEOLOCATION",
              "SOURCE_BT_RSSI_GEOLOCATION",
              "SOURCE_LORA_RSSI_GEOLOCATION",
              "SOURCE_LORA_TDOA_GEOLOCATION",
              "SOURCE_COMBINED_GEOLOCATION"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "service": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "received_at": {
    "description": "Server time when the Application Server received the message.",
    "format": "date-time",
    "type": "string"
  },
  "service_data": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "data": {
        "type": "object"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "service": {
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "simulated": {
    "description": "Signals if the message is coming from the Network Server or is simulated.\nThe Application Server automatically sets this field, and callers must not manually set it.",
    "type": "boolean"
  },
  "uplink_message": {
    "properties": {
      "app_s_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "confirmed": {
        "description": "Indicates whether the end device used confirmed data uplink.",
        "type": "boolean"
      },
      "consumed_airtime": {
        "description": "Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings.",
        "type": "string"
      },
      "decoded_payload": {
        "description": "The decoded frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).",
        "type": "object"
      },
      "decoded_payload_warnings": {
        "description": "Warnings generated by the message processor while decoding the frm_payload.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "f_cnt": {
        "description": "LoRaWAN FCntUp of the uplink message.",
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "description": "LoRaWAN FPort of the uplink message.",
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the uplink message.\nThe payload is still encrypted if the skip_payload_crypto field of the EndDevice\nis true, which is indicated by the presence of the app_s_key field.",
        "format": "byte",
        "type": "string"
      },
      "last_a_f_cnt_down": {
        "description": "The last AFCntDown of the current session.\nThis field is only present if the skip_payload_crypto field of the EndDevice\nis true.\nCan be used with app_s_key to encrypt downlink payloads.",
        "format": "int64",
        "type": "integer"
      },
      "last_battery_percentage": {
        "properties": {
          "f_cnt": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "received_at": {
            "description": "Time when last DevStatus MAC command was received.",
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "description": "The battery percentage of the end device.\nThe value is defined in the [0, 100] interval.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "normalized_payload": {
        "description": "The normalized frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).\nIf the message processor is a custom script, there is no uplink normalizer script and the decoded output is valid\nnormalized payload, this field contains the decoded payload.",
        "items": {
          "type": "object"
        },
        "type": "array"
      },
      "normalized_payload_warnings": {
        "description": "Warnings generated by the message processor while normalizing the decoded payload.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "packet_error_rate": {
        "description": "Packet error rate of the recent uplinks in the current session.\nCalculated by the Network Server. The value is defined in the [0, 1] interval.",
        "format": "float",
        "type": "number"
      },
      "received_at": {
        "description": "Server time when the Network Server received the message.",
        "format": "date-time",
        "type": "string"
      },
      "rx_metadata": {
        "description": "A list of metadata for each antenna of each gateway that received this message.",
        "items": {
          "description": "Contains metadata for a received message. Each antenna that receives\na message corresponds to one RxMetadata.",
          "properties": {
            "advanced": {
              "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
              "type": "object"
            },
            "antenna_index": {
              "format": "int64",
              "type": "integer"
            },
            "channel_index": {
              "description": "Index of the gateway channel that received the message.",
              "format": "int64",
              "type": "integer"
            },
            "channel_rssi": {
              "description": "Received signal strength indicator of the channel (dBm).",
              "format": "float",
              "type": "number"
            },
            "downlink_path_constraint": {
              "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
              "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
              "enum": [
                "DOWNLINK_PATH_CONSTRAINT_NONE",
                "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                "DOWNLINK_PATH_CONSTRAINT_NEVER"
              ],
              "type": "string"
            },
            "encrypted_fine_timestamp": {
              "description": "Encrypted gateway's internal fine timestamp when the Rx finished (nanoseconds).",
              "format": "byte",
              "type": "string"
            },
            "encrypted_fine_timestamp_key_id": {
              "type": "string"
            },
            "fine_timestamp": {
              "description": "Gateway's internal fine timestamp when the Rx finished (nanoseconds).",
              "format": "uint64",
              "type": "string"
            },
            "frequency_drift": {
              "description": "Frequency drift in Hz between start and end of an LR-FHSS packet (signed).",
              "format": "int32",
              "type": "integer"
            },
            "frequency_offset": {
              "description": "Frequency offset (Hz).",
              "format": "int64",
              "type": "string"
            },
            "gateway_ids": {
              "properties": {
                "eui": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "gateway_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "gps_time": {
              "description": "Timestamp at the end of the transmission, provided by the gateway.\nGuaranteed to be based on a GPS PPS signal, with an accuracy of 1 millisecond.",
              "format": "date-time",
              "type": "string"
            },
            "hopping_width": {
              "description": "Hopping width; a number describing the number of steps of the LR-FHSS grid.",
              "format": "int64",
              "type": "integer"
            },
            "location": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "packet_broker": {
              "properties": {
                "forwarder_cluster_id": {
                  "description": "Forwarder Cluster ID of the Packet Broker Forwarder.",
                  "type": "string"
                },
                "forwarder_gateway_eui": {
                  "description": "Forwarder gateway EUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "forwarder_gateway_id": {
                  "description": "Forwarder gateway ID.",
                  "type": "string"
                },
                "forwarder_net_id": {
                  "description": "LoRa Alliance NetID of the Packet Broker Forwarder Member.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "forwarder_tenant_id": {
                  "description": "Tenant ID managed by the Packet Broker Forwarder Member.",
                  "type": "string"
                },
                "home_network_cluster_id": {
                  "description": "Home Network Cluster ID of the Packet Broker Home Network.",
                  "type": "string"
                },
                "home_network_net_id": {
                  "description": "LoRa Alliance NetID of the Packet Broker Home Network Member.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "home_network_tenant_id": {
                  "description": "Tenant ID managed by the Packet Broker Home Network Member.\nThis value is empty if it cannot be determined by the Packet Broker Router.",
                  "type": "string"
                },
                "hops": {
                  "description": "Hops that the message passed. Each Packet Broker Router service appends an entry.",
                  "items": {
                    "properties": {
                      "received_at": {
                        "description": "Time when the service received the message.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "receiver_agent": {
                        "description": "Receiver agent.",
                        "type": "string"
                      },
                      "receiver_name": {
                        "description": "Receiver of the message.",
                        "type": "string"
                      },
                      "sender_address": {
                        "description": "Sender IP address or host name.",
                        "type": "string"
                      },
                      "sender_name": {
                        "description": "Sender of the message, typically the authorized client identifier.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "message_id": {
                  "description": "Message identifier generated by Packet Broker Router.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "received_at": {
              "description": "Timestamp at which the Gateway Server has received the message.",
              "format": "date-time",
              "type": "string"
            },
            "relay": {
              "properties": {
                "device_id": {
                  "description": "End device identifiers of the relay.",
                  "type": "string"
                },
                "wor_channel": {
                  "default": "RELAY_WOR_CHANNEL_DEFAULT",
                  "enum": [
                    "RELAY_WOR_CHANNEL_DEFAULT",
                    "RELAY_WOR_CHANNEL_SECONDARY"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rssi": {
              "description": "Received signal strength indicator (dBm).\nThis value equals `channel_rssi`.",
              "format": "float",
              "type": "number"
            },
            "rssi_standard_deviation": {
              "description": "Standard deviation of the RSSI during preamble.",
              "format": "float",
              "type": "number"
            },
            "signal_rssi": {
              "description": "Received signal strength indicator of the signal (dBm).",
              "format": "float",
              "type": "number"
            },
            "snr": {
              "description": "Signal-to-noise ratio (dB).",
              "format": "float",
              "type": "number"
            },
            "time": {
              "description": "Timestamp at the end of the transmission, provided by the gateway. The accuracy is undefined.",
              "format": "date-time",
              "type": "string"
            },
            "timestamp": {
              "description": "Gateway concentrator timestamp when the Rx finished (microseconds).",
              "format": "int64",
              "type": "integer"
            },
            "uplink_token": {
              "description": "Uplink token to be included in the Tx request in class A downlink; injected by gateway, Gateway Server or fNS.",
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this uplink.",
        "format": "byte",
        "type": "string"
      },
      "settings": {
        "description": "TxSettings contains the settings for a transmission.\nThis message is used on both uplink and downlink.\nOn downlink, this is a scheduled transmission.",
        "properties": {
          "concentrator_timestamp": {
            "description": "Concentrator timestamp for the downlink as calculated by the Gateway Server scheduler.\nThis value takes into account necessary offsets such as the RTT (Round Trip Time) and TOA (Time Of Arrival).\nThis field is set and used only by the Gateway Server.",
            "format": "int64",
            "type": "string"
          },
          "data_rate": {
            "properties": {
              "fsk": {
                "properties": {
                  "bit_rate": {
                    "description": "Bit rate (bps).",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "lora": {
                "properties": {
                  "bandwidth": {
                    "description": "Bandwidth (Hz).",
                    "format": "int64",
                    "type": "integer"
                  },
                  "coding_rate": {
                    "type": "string"
                  },
                  "spreading_factor": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "lrfhss": {
                "properties": {
                  "coding_rate": {
                    "type": "string"
                  },
                  "modulation_type": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "operating_channel_width": {
                    "description": "Operating Channel Width (Hz).",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "downlink": {
            "description": "Transmission settings for downlink.",
            "properties": {
              "antenna_index": {
                "description": "Index of the antenna on which the uplink was received and/or downlink must be sent.",
                "format": "int64",
                "type": "integer"
              },
              "invert_polarization": {
                "description": "Invert LoRa polarization; false for LoRaWAN uplink, true for downlink.",
                "type": "boolean"
              },
              "tx_power": {
                "description": "Transmission power (dBm). Only on downlink.",
                "format": "float",
                "type": "number"
              }
            },
            "type": "object"
          },
          "enable_crc": {
            "description": "Send a CRC in the packet; only on uplink; on downlink, CRC should not be enabled.",
            "type": "boolean"
          },
          "frequency": {
            "description": "Frequency (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "time": {
            "description": "Time of the gateway when the uplink message was received, or when the downlink message should be transmitted.\nFor downlink, this requires the gateway to have GPS time synchronization.",
            "format": "date-time",
            "type": "string"
          },
          "timestamp": {
            "description": "Timestamp of the gateway concentrator when the uplink message was received, or when the downlink message should be transmitted (microseconds).\nOn downlink, set timestamp to 0 and time to null to use immediate scheduling.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "uplink_normalized": {
    "properties": {
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Attributes for devices, set by the Application Server while handling the message.",
        "type": "object"
      },
      "confirmed": {
        "description": "Indicates whether the end device used confirmed data uplink.",
        "type": "boolean"
      },
      "consumed_airtime": {
        "description": "Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings.",
        "type": "string"
      },
      "f_cnt": {
        "description": "LoRaWAN FCntUp of the uplink message.",
        "format": "int64",
        "type": "integer"
      },
      "f_port": {
        "description": "LoRaWAN FPort of the uplink message.",
        "format": "int64",
        "type": "integer"
      },
      "frm_payload": {
        "description": "The frame payload of the uplink message.\nThis field is always decrypted with AppSKey.",
        "format": "byte",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "End device location metadata, set by the Application Server while handling the message.",
        "type": "object"
      },
      "network_ids": {
        "description": "Identifies a Network Server.",
        "properties": {
          "cluster_address": {
            "description": "Cluster address of the Network Server.",
            "type": "string"
          },
          "cluster_id": {
            "description": "Cluster identifier of the Network Server.",
            "type": "string"
          },
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "ns_id": {
            "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "tenant_address": {
            "description": "Optional tenant address for multi-tenant deployments.",
            "type": "string"
          },
          "tenant_id": {
            "description": "Optional tenant identifier for multi-tenant deployments.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "normalized_payload": {
        "description": "The normalized frame payload of the uplink message.\nThis field is set for each item in normalized_payload in the corresponding ApplicationUplink message.",
        "type": "object"
      },
      "normalized_payload_warnings": {
        "description": "This field is set to normalized_payload_warnings in the corresponding ApplicationUplink message.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "received_at": {
        "description": "Server time when the Network Server received the message.",
        "format": "date-time",
        "type": "string"
      },
      "rx_metadata": {
        "description": "A list of metadata for each antenna of each gateway that received this message.",
        "items": {
          "description": "Contains metadata for a received message. Each antenna that receives\na message corresponds to one RxMetadata.",
          "properties": {
            "advanced": {
              "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
              "type": "object"
            },
            "antenna_index": {
              "format": "int64",
              "type": "integer"
            },
            "channel_index": {
              "description": "Index of the gateway channel that received the message.",
              "format": "int64",
              "type": "integer"
            },
            "channel_rssi": {
              "description": "Received signal strength indicator of the channel (dBm).",
              "format": "float",
              "type": "number"
            },
            "downlink_path_constraint": {
              "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
              "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
              "enum": [
                "DOWNLINK_PATH_CONSTRAINT_NONE",
                "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                "DOWNLINK_PATH_CONSTRAINT_NEVER"
              ],
              "type": "string"
            },
            "encrypted_fine_timestamp": {
              "description": "Encrypted gateway's internal fine timestamp when the Rx finished (nanoseconds).",
              "format": "byte",
              "type": "string"
            },
            "encrypted_fine_timestamp_key_id": {
              "type": "string"
            },
            "fine_timestamp": {
              "description": "Gateway's internal fine timestamp when the Rx finished (nanoseconds).",
              "format": "uint64",
              "type": "string"
            },
            "frequency_drift": {
              "description": "Frequency drift in Hz between start and end of an LR-FHSS packet (signed).",
              "format": "int32",
              "type": "integer"
            },
            "frequency_offset": {
              "description": "Frequency offset (Hz).",
              "format": "int64",
              "type": "string"
            },
            "gateway_ids": {
              "properties": {
                "eui": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "gateway_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "gps_time": {
              "description": "Timestamp at the end of the transmission, provided by the gateway.\nGuaranteed to be based on a GPS PPS signal, with an accuracy of 1 millisecond.",
              "format": "date-time",
              "type": "string"
            },
            "hopping_width": {
              "description": "Hopping width; a number describing the number of steps of the LR-FHSS grid.",
              "format": "int64",
              "type": "integer"
            },
            "location": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "packet_broker": {
              "properties": {
                "forwarder_cluster_id": {
                  "description": "Forwarder Cluster ID of the Packet Broker Forwarder.",
                  "type": "string"
                },
                "forwarder_gateway_eui": {
                  "description": "Forwarder gateway EUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "forwarder_gateway_id": {
                  "description": "Forwarder gateway ID.",
                  "type": "string"
                },
                "forwarder_net_id": {
                  "description": "LoRa Alliance NetID of the Packet Broker Forwarder Member.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "forwarder_tenant_id": {
                  "description": "Tenant ID managed by the Packet Broker Forwarder Member.",
                  "type": "string"
                },
                "home_network_cluster_id": {
                  "description": "Home Network Cluster ID of the Packet Broker Home Network.",
                  "type": "string"
                },
                "home_network_net_id": {
                  "description": "LoRa Alliance NetID of the Packet Broker Home Network Member.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "home_network_tenant_id": {
                  "description": "Tenant ID managed by the Packet Broker Home Network Member.\nThis value is empty if it cannot be determined by the Packet Broker Router.",
                  "type": "string"
                },
                "hops": {
                  "description": "Hops that the message passed. Each Packet Broker Router service appends an entry.",
                  "items": {
                    "properties": {
                      "received_at": {
                        "description": "Time when the service received the message.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "receiver_agent": {
                        "description": "Receiver agent.",
                        "type": "string"
                      },
                      "receiver_name": {
                        "description": "Receiver of the message.",
                        "type": "string"
                      },
                      "sender_address": {
                        "description": "Sender IP address or host name.",
                        "type": "string"
                      },
                      "sender_name": {
                        "description": "Sender of the message, typically the authorized client identifier.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "message_id": {
                  "description": "Message identifier generated by Packet Broker Router.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "received_at": {
              "description": "Timestamp at which the Gateway Server has received the message.",
              "format": "date-time",
              "type": "string"
            },
            "relay": {
              "properties": {
                "device_id": {
                  "description": "End device identifiers of the relay.",
                  "type": "string"
                },
                "wor_channel": {
                  "default": "RELAY_WOR_CHANNEL_DEFAULT",
                  "enum": [
                    "RELAY_WOR_CHANNEL_DEFAULT",
                    "RELAY_WOR_CHANNEL_SECONDARY"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rssi": {
              "description": "Received signal strength indicator (dBm).\nThis value equals `channel_rssi`.",
              "format": "float",
              "type": "number"
            },
            "rssi_standard_deviation": {
              "description": "Standard deviation of the RSSI during preamble.",
              "format": "float",
              "type": "number"
            },
            "signal_rssi": {
              "description": "Received signal strength indicator of the signal (dBm).",
              "format": "float",
              "type": "number"
            },
            "snr": {
              "description": "Signal-to-noise ratio (dB).",
              "format": "float",
              "type": "number"
            },
            "time": {
              "description": "Timestamp at the end of the transmission, provided by the gateway. The accuracy is undefined.",
              "format": "date-time",
              "type": "string"
            },
            "timestamp": {
              "description": "Gateway concentrator timestamp when the Rx finished (microseconds).",
              "format": "int64",
              "type": "integer"
            },
            "uplink_token": {
              "description": "Uplink token to be included in the Tx request in class A downlink; injected by gateway, Gateway Server or fNS.",
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "session_key_id": {
        "description": "Join Server issued identifier for the session keys used by this uplink.",
        "format": "byte",
        "type": "string"
      },
      "settings": {
        "description": "TxSettings contains the settings for a transmission.\nThis message is used on both uplink and downlink.\nOn downlink, this is a scheduled transmission.",
        "properties": {
          "concentrator_timestamp": {
            "description": "Concentrator timestamp for the downlink as calculated by the Gateway Server scheduler.\nThis value takes into account necessary offsets such as the RTT (Round Trip Time) and TOA (Time Of Arrival).\nThis field is set and used only by the Gateway Server.",
            "format": "int64",
            "type": "string"
          },
          "data_rate": {
            "properties": {
              "fsk": {
                "properties": {
                  "bit_rate": {
                    "description": "Bit rate (bps).",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "lora": {
                "properties": {
                  "bandwidth": {
                    "description": "Bandwidth (Hz).",
                    "format": "int64",
                    "type": "integer"
                  },
                  "coding_rate": {
                    "type": "string"
                  },
                  "spreading_factor": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "lrfhss": {
                "properties": {
                  "coding_rate": {
                    "type": "string"
                  },
                  "modulation_type": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "operating_channel_width": {
                    "description": "Operating Channel Width (Hz).",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "downlink": {
            "description": "Transmission settings for downlink.",
            "properties": {
              "antenna_index": {
                "description": "Index of the antenna on which the uplink was received and/or downlink must be sent.",
                "format": "int64",
                "type": "integer"
              },
              "invert_polarization": {
                "description": "Invert LoRa polarization; false for LoRaWAN uplink, true for downlink.",
                "type": "boolean"
              },
              "tx_power": {
                "description": "Transmission power (dBm). Only on downlink.",
                "format": "float",
                "type": "number"
              }
            },
            "type": "object"
          },
          "enable_crc": {
            "description": "Send a CRC in the packet; only on uplink; on downlink, CRC should not be enabled.",
            "type": "boolean"
          },
          "frequency": {
            "description": "Frequency (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "time": {
            "description": "Time of the gateway when the uplink message was received, or when the downlink message should be transmitted.\nFor downlink, this requires the gateway to have GPS time synchronization.",
            "format": "date-time",
            "type": "string"
          },
          "timestamp": {
            "description": "Timestamp of the gateway concentrator when the uplink message was received, or when the downlink message should be transmitted (microseconds).\nOn downlink, set timestamp to 0 and time to null to use immediate scheduling.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

AsEndDeviceRegistry

Manage end devices on the Application Server.

Expand Collapse

delete

/as/applications/{application_ids.application_id}/devices/{device_id}

Delete deletes the device that matches the given identifiers.

Expand Collapse

If there are multiple matches, an error will be returned.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_id string true
dev_eui string The LoRaWAN DevEUI.
join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/as/applications/{end_device.ids.application_ids.application_id}/devices

Set creates or updates the device.

Expand Collapse

Request Parameters
Field Type Required Description
end_device.ids.application_ids.application_id string true
Request Body
Show JSON Schema
{
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the end device fields that should be updated.\nSee the API reference for which fields can be set on the different services.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/as/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}

Set creates or updates the device.

Expand Collapse

Request Parameters
Field Type Required Description
end_device.ids.application_ids.application_id string true
end_device.ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the end device fields that should be updated.\nSee the API reference for which fields can be set on the different services.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}

Get returns the device that matches the given identifiers.

Expand Collapse

If there are multiple matches, an error will be returned.

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
field_mask string The names of the end device fields that should be returned. See the API reference for which fields can be returned by the different services.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

AsEndDeviceBatchRegistry

Manage batches of end devices on the Application Server.

Expand Collapse

delete

/as/applications/{application_ids.application_id}/devices/batch

Delete a list of devices within the same application.

Expand Collapse

This operation is atomic; either all devices are deleted or none. Devices not found are skipped and no error is returned.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_ids array
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

AzureIoTHubService

Submit Azure IoT Hub device twin and lifecycle events.

Expand Collapse

post

/as/applications/{application_ids.application_id}/packages/azureiothub/events

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "events": {
    "items": {
      "properties": {
        "body": {
          "type": "object"
        },
        "end_device_ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "properties": {
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ApplicationUpStorage

Query application upstream messages from the storage integration.

Expand Collapse

get

/as/applications/{application_ids.application_id}/packages/storage/{type}

Returns a stream of application messages that have been stored in the database.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
type string true Query upstream messages of a specific type. If not set, then all upstream messages are returned.
end_device_ids.device_id string
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
limit integer Limit number of results.
after string Query upstream messages after this timestamp only. Cannot be used in conjunction with last.
before string Query upstream messages before this timestamp only. Cannot be used in conjunction with last.
f_port integer Query uplinks on a specific FPort only.
order string Order results.
field_mask string The names of the upstream message fields that should be returned. See the API reference for allowed field names for each type of upstream message.
last string Query upstream messages that have arrived in the last minutes or hours. Cannot be used in conjunction with after and before.
continuation_token string The continuation token, which is used to retrieve the next page. If provided, other fields are ignored.
Responses
Code Description Return Value
200 A successful response.(streaming responses)
Show JSON Schema
        {
  "error": {
    "properties": {
      "code": {
        "format": "int32",
        "type": "integer"
      },
      "details": {
        "items": {
          "additionalProperties": {},
          "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
          "properties": {
            "@type": {
              "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "message": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "result": {
    "description": "Application uplink message.",
    "properties": {
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "downlink_ack": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_failed": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "error": {
            "$ref": "#/definitions/v3ErrorDetails"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_nack": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_queue_invalidated": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "downlinks": {
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "last_f_cnt_down": {
            "format": "int64",
            "type": "integer"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_queued": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_sent": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "end_device_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_accept": {
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "invalidated_downlinks": {
            "description": "Downlink messages in the queue that got invalidated because of the session change.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_session": {
            "description": "Indicates whether the security context refers to the pending session, i.e. when this join-accept is an answer to a\nrejoin-request.",
            "type": "boolean"
          },
          "received_at": {
            "description": "Server time when the Network Server received the message.",
            "format": "date-time",
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys negotiated in this join.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "location_solved": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "location": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "service": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "received_at": {
        "description": "Server time when the Application Server received the message.",
        "format": "date-time",
        "type": "string"
      },
      "service_data": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "data": {
            "type": "object"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "service": {
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "simulated": {
        "description": "Signals if the message is coming from the Network Server or is simulated.\nThe Application Server automatically sets this field, and callers must not manually set it.",
        "type": "boolean"
      },
      "uplink_message": {
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "confirmed": {
            "description": "Indicates whether the end device used confirmed data uplink.",
            "type": "boolean"
          },
          "consumed_airtime": {
            "description": "Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings.",
            "type": "string"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while decoding the frm_payload.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "description": "LoRaWAN FCntUp of the uplink message.",
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "description": "LoRaWAN FPort of the uplink message.",
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the uplink message.\nThe payload is still encrypted if the skip_payload_crypto field of the EndDevice\nis true, which is indicated by the presence of the app_s_key field.",
            "format": "byte",
            "type": "string"
          },
          "last_a_f_cnt_down": {
            "description": "The last AFCntDown of the current session.\nThis field is only present if the skip_payload_crypto field of the EndDevice\nis true.\nCan be used with app_s_key to encrypt downlink payloads.",
            "format": "int64",
            "type": "integer"
          },
          "last_battery_percentage": {
            "properties": {
              "f_cnt": {
                "description": "Frame counter value of last uplink containing DevStatusAns.",
                "format": "int64",
                "type": "integer"
              },
              "received_at": {
                "description": "Time when last DevStatus MAC command was received.",
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "description": "The battery percentage of the end device.\nThe value is defined in the [0, 100] interval.",
                "format": "float",
                "type": "number"
              }
            },
            "type": "object"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "normalized_payload": {
            "description": "The normalized frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).\nIf the message processor is a custom script, there is no uplink normalizer script and the decoded output is valid\nnormalized payload, this field contains the decoded payload.",
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "normalized_payload_warnings": {
            "description": "Warnings generated by the message processor while normalizing the decoded payload.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "packet_error_rate": {
            "description": "Packet error rate of the recent uplinks in the current session.\nCalculated by the Network Server. The value is defined in the [0, 1] interval.",
            "format": "float",
            "type": "number"
          },
          "received_at": {
            "description": "Server time when the Network Server received the message.",
            "format": "date-time",
            "type": "string"
          },
          "rx_metadata": {
            "description": "A list of metadata for each antenna of each gateway that received this message.",
            "items": {
              "description": "Contains metadata for a received message. Each antenna that receives\na message corresponds to one RxMetadata.",
              "properties": {
                "advanced": {
                  "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
                  "type": "object"
                },
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "channel_index": {
                  "description": "Index of the gateway channel that received the message.",
                  "format": "int64",
                  "type": "integer"
                },
                "channel_rssi": {
                  "description": "Received signal strength indicator of the channel (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "downlink_path_constraint": {
                  "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                  "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                  "enum": [
                    "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                    "DOWNLINK_PATH_CONSTRAINT_NEVER"
                  ],
                  "type": "string"
                },
                "encrypted_fine_timestamp": {
                  "description": "Encrypted gateway's internal fine timestamp when the Rx finished (nanoseconds).",
                  "format": "byte",
                  "type": "string"
                },
                "encrypted_fine_timestamp_key_id": {
                  "type": "string"
                },
                "fine_timestamp": {
                  "description": "Gateway's internal fine timestamp when the Rx finished (nanoseconds).",
                  "format": "uint64",
                  "type": "string"
                },
                "frequency_drift": {
                  "description": "Frequency drift in Hz between start and end of an LR-FHSS packet (signed).",
                  "format": "int32",
                  "type": "integer"
                },
                "frequency_offset": {
                  "description": "Frequency offset (Hz).",
                  "format": "int64",
                  "type": "string"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "gps_time": {
                  "description": "Timestamp at the end of the transmission, provided by the gateway.\nGuaranteed to be based on a GPS PPS signal, with an accuracy of 1 millisecond.",
                  "format": "date-time",
                  "type": "string"
                },
                "hopping_width": {
                  "description": "Hopping width; a number describing the number of steps of the LR-FHSS grid.",
                  "format": "int64",
                  "type": "integer"
                },
                "location": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "packet_broker": {
                  "properties": {
                    "forwarder_cluster_id": {
                      "description": "Forwarder Cluster ID of the Packet Broker Forwarder.",
                      "type": "string"
                    },
                    "forwarder_gateway_eui": {
                      "description": "Forwarder gateway EUI.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "forwarder_gateway_id": {
                      "description": "Forwarder gateway ID.",
                      "type": "string"
                    },
                    "forwarder_net_id": {
                      "description": "LoRa Alliance NetID of the Packet Broker Forwarder Member.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "forwarder_tenant_id": {
                      "description": "Tenant ID managed by the Packet Broker Forwarder Member.",
                      "type": "string"
                    },
                    "home_network_cluster_id": {
                      "description": "Home Network Cluster ID of the Packet Broker Home Network.",
                      "type": "string"
                    },
                    "home_network_net_id": {
                      "description": "LoRa Alliance NetID of the Packet Broker Home Network Member.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "home_network_tenant_id": {
                      "description": "Tenant ID managed by the Packet Broker Home Network Member.\nThis value is empty if it cannot be determined by the Packet Broker Router.",
                      "type": "string"
                    },
                    "hops": {
                      "description": "Hops that the message passed. Each Packet Broker Router service appends an entry.",
                      "items": {
                        "properties": {
                          "received_at": {
                            "description": "Time when the service received the message.",
                            "format": "date-time",
                            "type": "string"
                          },
                          "receiver_agent": {
                            "description": "Receiver agent.",
                            "type": "string"
                          },
                          "receiver_name": {
                            "description": "Receiver of the message.",
                            "type": "string"
                          },
                          "sender_address": {
                            "description": "Sender IP address or host name.",
                            "type": "string"
                          },
                          "sender_name": {
                            "description": "Sender of the message, typically the authorized client identifier.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "message_id": {
                      "description": "Message identifier generated by Packet Broker Router.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "received_at": {
                  "description": "Timestamp at which the Gateway Server has received the message.",
                  "format": "date-time",
                  "type": "string"
                },
                "relay": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifiers of the relay.",
                      "type": "string"
                    },
                    "wor_channel": {
                      "default": "RELAY_WOR_CHANNEL_DEFAULT",
                      "enum": [
                        "RELAY_WOR_CHANNEL_DEFAULT",
                        "RELAY_WOR_CHANNEL_SECONDARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rssi": {
                  "description": "Received signal strength indicator (dBm).\nThis value equals `channel_rssi`.",
                  "format": "float",
                  "type": "number"
                },
                "rssi_standard_deviation": {
                  "description": "Standard deviation of the RSSI during preamble.",
                  "format": "float",
                  "type": "number"
                },
                "signal_rssi": {
                  "description": "Received signal strength indicator of the signal (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "snr": {
                  "description": "Signal-to-noise ratio (dB).",
                  "format": "float",
                  "type": "number"
                },
                "time": {
                  "description": "Timestamp at the end of the transmission, provided by the gateway. The accuracy is undefined.",
                  "format": "date-time",
                  "type": "string"
                },
                "timestamp": {
                  "description": "Gateway concentrator timestamp when the Rx finished (microseconds).",
                  "format": "int64",
                  "type": "integer"
                },
                "uplink_token": {
                  "description": "Uplink token to be included in the Tx request in class A downlink; injected by gateway, Gateway Server or fNS.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this uplink.",
            "format": "byte",
            "type": "string"
          },
          "settings": {
            "description": "TxSettings contains the settings for a transmission.\nThis message is used on both uplink and downlink.\nOn downlink, this is a scheduled transmission.",
            "properties": {
              "concentrator_timestamp": {
                "description": "Concentrator timestamp for the downlink as calculated by the Gateway Server scheduler.\nThis value takes into account necessary offsets such as the RTT (Round Trip Time) and TOA (Time Of Arrival).\nThis field is set and used only by the Gateway Server.",
                "format": "int64",
                "type": "string"
              },
              "data_rate": {
                "properties": {
                  "fsk": {
                    "properties": {
                      "bit_rate": {
                        "description": "Bit rate (bps).",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "lora": {
                    "properties": {
                      "bandwidth": {
                        "description": "Bandwidth (Hz).",
                        "format": "int64",
                        "type": "integer"
                      },
                      "coding_rate": {
                        "type": "string"
                      },
                      "spreading_factor": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "lrfhss": {
                    "properties": {
                      "coding_rate": {
                        "type": "string"
                      },
                      "modulation_type": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "operating_channel_width": {
                        "description": "Operating Channel Width (Hz).",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "downlink": {
                "description": "Transmission settings for downlink.",
                "properties": {
                  "antenna_index": {
                    "description": "Index of the antenna on which the uplink was received and/or downlink must be sent.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "invert_polarization": {
                    "description": "Invert LoRa polarization; false for LoRaWAN uplink, true for downlink.",
                    "type": "boolean"
                  },
                  "tx_power": {
                    "description": "Transmission power (dBm). Only on downlink.",
                    "format": "float",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "enable_crc": {
                "description": "Send a CRC in the packet; only on uplink; on downlink, CRC should not be enabled.",
                "type": "boolean"
              },
              "frequency": {
                "description": "Frequency (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "time": {
                "description": "Time of the gateway when the uplink message was received, or when the downlink message should be transmitted.\nFor downlink, this requires the gateway to have GPS time synchronization.",
                "format": "date-time",
                "type": "string"
              },
              "timestamp": {
                "description": "Timestamp of the gateway concentrator when the uplink message was received, or when the downlink message should be transmitted (microseconds).\nOn downlink, set timestamp to 0 and time to null to use immediate scheduling.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "uplink_normalized": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "confirmed": {
            "description": "Indicates whether the end device used confirmed data uplink.",
            "type": "boolean"
          },
          "consumed_airtime": {
            "description": "Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings.",
            "type": "string"
          },
          "f_cnt": {
            "description": "LoRaWAN FCntUp of the uplink message.",
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "description": "LoRaWAN FPort of the uplink message.",
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the uplink message.\nThis field is always decrypted with AppSKey.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "normalized_payload": {
            "description": "The normalized frame payload of the uplink message.\nThis field is set for each item in normalized_payload in the corresponding ApplicationUplink message.",
            "type": "object"
          },
          "normalized_payload_warnings": {
            "description": "This field is set to normalized_payload_warnings in the corresponding ApplicationUplink message.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "received_at": {
            "description": "Server time when the Network Server received the message.",
            "format": "date-time",
            "type": "string"
          },
          "rx_metadata": {
            "description": "A list of metadata for each antenna of each gateway that received this message.",
            "items": {
              "description": "Contains metadata for a received message. Each antenna that receives\na message corresponds to one RxMetadata.",
              "properties": {
                "advanced": {
                  "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
                  "type": "object"
                },
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "channel_index": {
                  "description": "Index of the gateway channel that received the message.",
                  "format": "int64",
                  "type": "integer"
                },
                "channel_rssi": {
                  "description": "Received signal strength indicator of the channel (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "downlink_path_constraint": {
                  "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                  "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                  "enum": [
                    "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                    "DOWNLINK_PATH_CONSTRAINT_NEVER"
                  ],
                  "type": "string"
                },
                "encrypted_fine_timestamp": {
                  "description": "Encrypted gateway's internal fine timestamp when the Rx finished (nanoseconds).",
                  "format": "byte",
                  "type": "string"
                },
                "encrypted_fine_timestamp_key_id": {
                  "type": "string"
                },
                "fine_timestamp": {
                  "description": "Gateway's internal fine timestamp when the Rx finished (nanoseconds).",
                  "format": "uint64",
                  "type": "string"
                },
                "frequency_drift": {
                  "description": "Frequency drift in Hz between start and end of an LR-FHSS packet (signed).",
                  "format": "int32",
                  "type": "integer"
                },
                "frequency_offset": {
                  "description": "Frequency offset (Hz).",
                  "format": "int64",
                  "type": "string"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "gps_time": {
                  "description": "Timestamp at the end of the transmission, provided by the gateway.\nGuaranteed to be based on a GPS PPS signal, with an accuracy of 1 millisecond.",
                  "format": "date-time",
                  "type": "string"
                },
                "hopping_width": {
                  "description": "Hopping width; a number describing the number of steps of the LR-FHSS grid.",
                  "format": "int64",
                  "type": "integer"
                },
                "location": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "packet_broker": {
                  "properties": {
                    "forwarder_cluster_id": {
                      "description": "Forwarder Cluster ID of the Packet Broker Forwarder.",
                      "type": "string"
                    },
                    "forwarder_gateway_eui": {
                      "description": "Forwarder gateway EUI.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "forwarder_gateway_id": {
                      "description": "Forwarder gateway ID.",
                      "type": "string"
                    },
                    "forwarder_net_id": {
                      "description": "LoRa Alliance NetID of the Packet Broker Forwarder Member.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "forwarder_tenant_id": {
                      "description": "Tenant ID managed by the Packet Broker Forwarder Member.",
                      "type": "string"
                    },
                    "home_network_cluster_id": {
                      "description": "Home Network Cluster ID of the Packet Broker Home Network.",
                      "type": "string"
                    },
                    "home_network_net_id": {
                      "description": "LoRa Alliance NetID of the Packet Broker Home Network Member.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "home_network_tenant_id": {
                      "description": "Tenant ID managed by the Packet Broker Home Network Member.\nThis value is empty if it cannot be determined by the Packet Broker Router.",
                      "type": "string"
                    },
                    "hops": {
                      "description": "Hops that the message passed. Each Packet Broker Router service appends an entry.",
                      "items": {
                        "properties": {
                          "received_at": {
                            "description": "Time when the service received the message.",
                            "format": "date-time",
                            "type": "string"
                          },
                          "receiver_agent": {
                            "description": "Receiver agent.",
                            "type": "string"
                          },
                          "receiver_name": {
                            "description": "Receiver of the message.",
                            "type": "string"
                          },
                          "sender_address": {
                            "description": "Sender IP address or host name.",
                            "type": "string"
                          },
                          "sender_name": {
                            "description": "Sender of the message, typically the authorized client identifier.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "message_id": {
                      "description": "Message identifier generated by Packet Broker Router.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "received_at": {
                  "description": "Timestamp at which the Gateway Server has received the message.",
                  "format": "date-time",
                  "type": "string"
                },
                "relay": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifiers of the relay.",
                      "type": "string"
                    },
                    "wor_channel": {
                      "default": "RELAY_WOR_CHANNEL_DEFAULT",
                      "enum": [
                        "RELAY_WOR_CHANNEL_DEFAULT",
                        "RELAY_WOR_CHANNEL_SECONDARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rssi": {
                  "description": "Received signal strength indicator (dBm).\nThis value equals `channel_rssi`.",
                  "format": "float",
                  "type": "number"
                },
                "rssi_standard_deviation": {
                  "description": "Standard deviation of the RSSI during preamble.",
                  "format": "float",
                  "type": "number"
                },
                "signal_rssi": {
                  "description": "Received signal strength indicator of the signal (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "snr": {
                  "description": "Signal-to-noise ratio (dB).",
                  "format": "float",
                  "type": "number"
                },
                "time": {
                  "description": "Timestamp at the end of the transmission, provided by the gateway. The accuracy is undefined.",
                  "format": "date-time",
                  "type": "string"
                },
                "timestamp": {
                  "description": "Gateway concentrator timestamp when the Rx finished (microseconds).",
                  "format": "int64",
                  "type": "integer"
                },
                "uplink_token": {
                  "description": "Uplink token to be included in the Tx request in class A downlink; injected by gateway, Gateway Server or fNS.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this uplink.",
            "format": "byte",
            "type": "string"
          },
          "settings": {
            "description": "TxSettings contains the settings for a transmission.\nThis message is used on both uplink and downlink.\nOn downlink, this is a scheduled transmission.",
            "properties": {
              "concentrator_timestamp": {
                "description": "Concentrator timestamp for the downlink as calculated by the Gateway Server scheduler.\nThis value takes into account necessary offsets such as the RTT (Round Trip Time) and TOA (Time Of Arrival).\nThis field is set and used only by the Gateway Server.",
                "format": "int64",
                "type": "string"
              },
              "data_rate": {
                "properties": {
                  "fsk": {
                    "properties": {
                      "bit_rate": {
                        "description": "Bit rate (bps).",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "lora": {
                    "properties": {
                      "bandwidth": {
                        "description": "Bandwidth (Hz).",
                        "format": "int64",
                        "type": "integer"
                      },
                      "coding_rate": {
                        "type": "string"
                      },
                      "spreading_factor": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "lrfhss": {
                    "properties": {
                      "coding_rate": {
                        "type": "string"
                      },
                      "modulation_type": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "operating_channel_width": {
                        "description": "Operating Channel Width (Hz).",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "downlink": {
                "description": "Transmission settings for downlink.",
                "properties": {
                  "antenna_index": {
                    "description": "Index of the antenna on which the uplink was received and/or downlink must be sent.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "invert_polarization": {
                    "description": "Invert LoRa polarization; false for LoRaWAN uplink, true for downlink.",
                    "type": "boolean"
                  },
                  "tx_power": {
                    "description": "Transmission power (dBm). Only on downlink.",
                    "format": "float",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "enable_crc": {
                "description": "Send a CRC in the packet; only on uplink; on downlink, CRC should not be enabled.",
                "type": "boolean"
              },
              "frequency": {
                "description": "Frequency (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "time": {
                "description": "Time of the gateway when the uplink message was received, or when the downlink message should be transmitted.\nFor downlink, this requires the gateway to have GPS time synchronization.",
                "format": "date-time",
                "type": "string"
              },
              "timestamp": {
                "description": "Timestamp of the gateway concentrator when the uplink message was received, or when the downlink message should be transmitted (microseconds).\nOn downlink, set timestamp to 0 and time to null to use immediate scheduling.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{application_ids.application_id}/packages/storage/{type}/count

Returns how many application messages have been stored in the database for an application or end device.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
type string true Count upstream messages of a specific type. If not set, then all upstream messages are returned.
end_device_ids.device_id string
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
after string Count upstream messages after this timestamp only. Cannot be used in conjunction with last.
before string Count upstream messages before this timestamp only. Cannot be used in conjunction with last.
f_port integer Count uplinks on a specific FPort only.
last string Count upstream messages that have arrived in the last minutes or hours. Cannot be used in conjunction with after and before.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "count": {
    "additionalProperties": {
      "format": "int64",
      "type": "integer"
    },
    "description": "Number of stored messages by end device ID.",
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/packages/storage/{type}

Returns a stream of application messages that have been stored in the database.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
type string true Query upstream messages of a specific type. If not set, then all upstream messages are returned.
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
limit integer Limit number of results.
after string Query upstream messages after this timestamp only. Cannot be used in conjunction with last.
before string Query upstream messages before this timestamp only. Cannot be used in conjunction with last.
f_port integer Query uplinks on a specific FPort only.
order string Order results.
field_mask string The names of the upstream message fields that should be returned. See the API reference for allowed field names for each type of upstream message.
last string Query upstream messages that have arrived in the last minutes or hours. Cannot be used in conjunction with after and before.
continuation_token string The continuation token, which is used to retrieve the next page. If provided, other fields are ignored.
Responses
Code Description Return Value
200 A successful response.(streaming responses)
Show JSON Schema
        {
  "error": {
    "properties": {
      "code": {
        "format": "int32",
        "type": "integer"
      },
      "details": {
        "items": {
          "additionalProperties": {},
          "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
          "properties": {
            "@type": {
              "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "message": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "result": {
    "description": "Application uplink message.",
    "properties": {
      "correlation_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "downlink_ack": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_failed": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "error": {
            "$ref": "#/definitions/v3ErrorDetails"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_nack": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_queue_invalidated": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "downlinks": {
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "last_f_cnt_down": {
            "format": "int64",
            "type": "integer"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_queued": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "downlink_sent": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "end_device_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_accept": {
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "invalidated_downlinks": {
            "description": "Downlink messages in the queue that got invalidated because of the session change.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_session": {
            "description": "Indicates whether the security context refers to the pending session, i.e. when this join-accept is an answer to a\nrejoin-request.",
            "type": "boolean"
          },
          "received_at": {
            "description": "Server time when the Network Server received the message.",
            "format": "date-time",
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys negotiated in this join.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "location_solved": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "location": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "service": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "received_at": {
        "description": "Server time when the Application Server received the message.",
        "format": "date-time",
        "type": "string"
      },
      "service_data": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "data": {
            "type": "object"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "service": {
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "simulated": {
        "description": "Signals if the message is coming from the Network Server or is simulated.\nThe Application Server automatically sets this field, and callers must not manually set it.",
        "type": "boolean"
      },
      "uplink_message": {
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "confirmed": {
            "description": "Indicates whether the end device used confirmed data uplink.",
            "type": "boolean"
          },
          "consumed_airtime": {
            "description": "Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings.",
            "type": "string"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while decoding the frm_payload.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "description": "LoRaWAN FCntUp of the uplink message.",
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "description": "LoRaWAN FPort of the uplink message.",
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the uplink message.\nThe payload is still encrypted if the skip_payload_crypto field of the EndDevice\nis true, which is indicated by the presence of the app_s_key field.",
            "format": "byte",
            "type": "string"
          },
          "last_a_f_cnt_down": {
            "description": "The last AFCntDown of the current session.\nThis field is only present if the skip_payload_crypto field of the EndDevice\nis true.\nCan be used with app_s_key to encrypt downlink payloads.",
            "format": "int64",
            "type": "integer"
          },
          "last_battery_percentage": {
            "properties": {
              "f_cnt": {
                "description": "Frame counter value of last uplink containing DevStatusAns.",
                "format": "int64",
                "type": "integer"
              },
              "received_at": {
                "description": "Time when last DevStatus MAC command was received.",
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "description": "The battery percentage of the end device.\nThe value is defined in the [0, 100] interval.",
                "format": "float",
                "type": "number"
              }
            },
            "type": "object"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "normalized_payload": {
            "description": "The normalized frame payload of the uplink message.\nThis field is set by the message processor that is configured for the end device (see formatters) or application (see default_formatters).\nIf the message processor is a custom script, there is no uplink normalizer script and the decoded output is valid\nnormalized payload, this field contains the decoded payload.",
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "normalized_payload_warnings": {
            "description": "Warnings generated by the message processor while normalizing the decoded payload.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "packet_error_rate": {
            "description": "Packet error rate of the recent uplinks in the current session.\nCalculated by the Network Server. The value is defined in the [0, 1] interval.",
            "format": "float",
            "type": "number"
          },
          "received_at": {
            "description": "Server time when the Network Server received the message.",
            "format": "date-time",
            "type": "string"
          },
          "rx_metadata": {
            "description": "A list of metadata for each antenna of each gateway that received this message.",
            "items": {
              "description": "Contains metadata for a received message. Each antenna that receives\na message corresponds to one RxMetadata.",
              "properties": {
                "advanced": {
                  "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
                  "type": "object"
                },
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "channel_index": {
                  "description": "Index of the gateway channel that received the message.",
                  "format": "int64",
                  "type": "integer"
                },
                "channel_rssi": {
                  "description": "Received signal strength indicator of the channel (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "downlink_path_constraint": {
                  "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                  "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                  "enum": [
                    "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                    "DOWNLINK_PATH_CONSTRAINT_NEVER"
                  ],
                  "type": "string"
                },
                "encrypted_fine_timestamp": {
                  "description": "Encrypted gateway's internal fine timestamp when the Rx finished (nanoseconds).",
                  "format": "byte",
                  "type": "string"
                },
                "encrypted_fine_timestamp_key_id": {
                  "type": "string"
                },
                "fine_timestamp": {
                  "description": "Gateway's internal fine timestamp when the Rx finished (nanoseconds).",
                  "format": "uint64",
                  "type": "string"
                },
                "frequency_drift": {
                  "description": "Frequency drift in Hz between start and end of an LR-FHSS packet (signed).",
                  "format": "int32",
                  "type": "integer"
                },
                "frequency_offset": {
                  "description": "Frequency offset (Hz).",
                  "format": "int64",
                  "type": "string"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "gps_time": {
                  "description": "Timestamp at the end of the transmission, provided by the gateway.\nGuaranteed to be based on a GPS PPS signal, with an accuracy of 1 millisecond.",
                  "format": "date-time",
                  "type": "string"
                },
                "hopping_width": {
                  "description": "Hopping width; a number describing the number of steps of the LR-FHSS grid.",
                  "format": "int64",
                  "type": "integer"
                },
                "location": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "packet_broker": {
                  "properties": {
                    "forwarder_cluster_id": {
                      "description": "Forwarder Cluster ID of the Packet Broker Forwarder.",
                      "type": "string"
                    },
                    "forwarder_gateway_eui": {
                      "description": "Forwarder gateway EUI.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "forwarder_gateway_id": {
                      "description": "Forwarder gateway ID.",
                      "type": "string"
                    },
                    "forwarder_net_id": {
                      "description": "LoRa Alliance NetID of the Packet Broker Forwarder Member.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "forwarder_tenant_id": {
                      "description": "Tenant ID managed by the Packet Broker Forwarder Member.",
                      "type": "string"
                    },
                    "home_network_cluster_id": {
                      "description": "Home Network Cluster ID of the Packet Broker Home Network.",
                      "type": "string"
                    },
                    "home_network_net_id": {
                      "description": "LoRa Alliance NetID of the Packet Broker Home Network Member.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "home_network_tenant_id": {
                      "description": "Tenant ID managed by the Packet Broker Home Network Member.\nThis value is empty if it cannot be determined by the Packet Broker Router.",
                      "type": "string"
                    },
                    "hops": {
                      "description": "Hops that the message passed. Each Packet Broker Router service appends an entry.",
                      "items": {
                        "properties": {
                          "received_at": {
                            "description": "Time when the service received the message.",
                            "format": "date-time",
                            "type": "string"
                          },
                          "receiver_agent": {
                            "description": "Receiver agent.",
                            "type": "string"
                          },
                          "receiver_name": {
                            "description": "Receiver of the message.",
                            "type": "string"
                          },
                          "sender_address": {
                            "description": "Sender IP address or host name.",
                            "type": "string"
                          },
                          "sender_name": {
                            "description": "Sender of the message, typically the authorized client identifier.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "message_id": {
                      "description": "Message identifier generated by Packet Broker Router.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "received_at": {
                  "description": "Timestamp at which the Gateway Server has received the message.",
                  "format": "date-time",
                  "type": "string"
                },
                "relay": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifiers of the relay.",
                      "type": "string"
                    },
                    "wor_channel": {
                      "default": "RELAY_WOR_CHANNEL_DEFAULT",
                      "enum": [
                        "RELAY_WOR_CHANNEL_DEFAULT",
                        "RELAY_WOR_CHANNEL_SECONDARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rssi": {
                  "description": "Received signal strength indicator (dBm).\nThis value equals `channel_rssi`.",
                  "format": "float",
                  "type": "number"
                },
                "rssi_standard_deviation": {
                  "description": "Standard deviation of the RSSI during preamble.",
                  "format": "float",
                  "type": "number"
                },
                "signal_rssi": {
                  "description": "Received signal strength indicator of the signal (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "snr": {
                  "description": "Signal-to-noise ratio (dB).",
                  "format": "float",
                  "type": "number"
                },
                "time": {
                  "description": "Timestamp at the end of the transmission, provided by the gateway. The accuracy is undefined.",
                  "format": "date-time",
                  "type": "string"
                },
                "timestamp": {
                  "description": "Gateway concentrator timestamp when the Rx finished (microseconds).",
                  "format": "int64",
                  "type": "integer"
                },
                "uplink_token": {
                  "description": "Uplink token to be included in the Tx request in class A downlink; injected by gateway, Gateway Server or fNS.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this uplink.",
            "format": "byte",
            "type": "string"
          },
          "settings": {
            "description": "TxSettings contains the settings for a transmission.\nThis message is used on both uplink and downlink.\nOn downlink, this is a scheduled transmission.",
            "properties": {
              "concentrator_timestamp": {
                "description": "Concentrator timestamp for the downlink as calculated by the Gateway Server scheduler.\nThis value takes into account necessary offsets such as the RTT (Round Trip Time) and TOA (Time Of Arrival).\nThis field is set and used only by the Gateway Server.",
                "format": "int64",
                "type": "string"
              },
              "data_rate": {
                "properties": {
                  "fsk": {
                    "properties": {
                      "bit_rate": {
                        "description": "Bit rate (bps).",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "lora": {
                    "properties": {
                      "bandwidth": {
                        "description": "Bandwidth (Hz).",
                        "format": "int64",
                        "type": "integer"
                      },
                      "coding_rate": {
                        "type": "string"
                      },
                      "spreading_factor": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "lrfhss": {
                    "properties": {
                      "coding_rate": {
                        "type": "string"
                      },
                      "modulation_type": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "operating_channel_width": {
                        "description": "Operating Channel Width (Hz).",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "downlink": {
                "description": "Transmission settings for downlink.",
                "properties": {
                  "antenna_index": {
                    "description": "Index of the antenna on which the uplink was received and/or downlink must be sent.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "invert_polarization": {
                    "description": "Invert LoRa polarization; false for LoRaWAN uplink, true for downlink.",
                    "type": "boolean"
                  },
                  "tx_power": {
                    "description": "Transmission power (dBm). Only on downlink.",
                    "format": "float",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "enable_crc": {
                "description": "Send a CRC in the packet; only on uplink; on downlink, CRC should not be enabled.",
                "type": "boolean"
              },
              "frequency": {
                "description": "Frequency (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "time": {
                "description": "Time of the gateway when the uplink message was received, or when the downlink message should be transmitted.\nFor downlink, this requires the gateway to have GPS time synchronization.",
                "format": "date-time",
                "type": "string"
              },
              "timestamp": {
                "description": "Timestamp of the gateway concentrator when the uplink message was received, or when the downlink message should be transmitted (microseconds).\nOn downlink, set timestamp to 0 and time to null to use immediate scheduling.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "uplink_normalized": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "confirmed": {
            "description": "Indicates whether the end device used confirmed data uplink.",
            "type": "boolean"
          },
          "consumed_airtime": {
            "description": "Consumed airtime for the transmission of the uplink message. Calculated by Network Server using the raw payload size and the transmission settings.",
            "type": "string"
          },
          "f_cnt": {
            "description": "LoRaWAN FCntUp of the uplink message.",
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "description": "LoRaWAN FPort of the uplink message.",
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the uplink message.\nThis field is always decrypted with AppSKey.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "normalized_payload": {
            "description": "The normalized frame payload of the uplink message.\nThis field is set for each item in normalized_payload in the corresponding ApplicationUplink message.",
            "type": "object"
          },
          "normalized_payload_warnings": {
            "description": "This field is set to normalized_payload_warnings in the corresponding ApplicationUplink message.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "received_at": {
            "description": "Server time when the Network Server received the message.",
            "format": "date-time",
            "type": "string"
          },
          "rx_metadata": {
            "description": "A list of metadata for each antenna of each gateway that received this message.",
            "items": {
              "description": "Contains metadata for a received message. Each antenna that receives\na message corresponds to one RxMetadata.",
              "properties": {
                "advanced": {
                  "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
                  "type": "object"
                },
                "antenna_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "channel_index": {
                  "description": "Index of the gateway channel that received the message.",
                  "format": "int64",
                  "type": "integer"
                },
                "channel_rssi": {
                  "description": "Received signal strength indicator of the channel (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "downlink_path_constraint": {
                  "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                  "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                  "enum": [
                    "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                    "DOWNLINK_PATH_CONSTRAINT_NEVER"
                  ],
                  "type": "string"
                },
                "encrypted_fine_timestamp": {
                  "description": "Encrypted gateway's internal fine timestamp when the Rx finished (nanoseconds).",
                  "format": "byte",
                  "type": "string"
                },
                "encrypted_fine_timestamp_key_id": {
                  "type": "string"
                },
                "fine_timestamp": {
                  "description": "Gateway's internal fine timestamp when the Rx finished (nanoseconds).",
                  "format": "uint64",
                  "type": "string"
                },
                "frequency_drift": {
                  "description": "Frequency drift in Hz between start and end of an LR-FHSS packet (signed).",
                  "format": "int32",
                  "type": "integer"
                },
                "frequency_offset": {
                  "description": "Frequency offset (Hz).",
                  "format": "int64",
                  "type": "string"
                },
                "gateway_ids": {
                  "properties": {
                    "eui": {
                      "description": "Secondary identifier, which can only be used in specific requests.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "gateway_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "gps_time": {
                  "description": "Timestamp at the end of the transmission, provided by the gateway.\nGuaranteed to be based on a GPS PPS signal, with an accuracy of 1 millisecond.",
                  "format": "date-time",
                  "type": "string"
                },
                "hopping_width": {
                  "description": "Hopping width; a number describing the number of steps of the LR-FHSS grid.",
                  "format": "int64",
                  "type": "integer"
                },
                "location": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "packet_broker": {
                  "properties": {
                    "forwarder_cluster_id": {
                      "description": "Forwarder Cluster ID of the Packet Broker Forwarder.",
                      "type": "string"
                    },
                    "forwarder_gateway_eui": {
                      "description": "Forwarder gateway EUI.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "forwarder_gateway_id": {
                      "description": "Forwarder gateway ID.",
                      "type": "string"
                    },
                    "forwarder_net_id": {
                      "description": "LoRa Alliance NetID of the Packet Broker Forwarder Member.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "forwarder_tenant_id": {
                      "description": "Tenant ID managed by the Packet Broker Forwarder Member.",
                      "type": "string"
                    },
                    "home_network_cluster_id": {
                      "description": "Home Network Cluster ID of the Packet Broker Home Network.",
                      "type": "string"
                    },
                    "home_network_net_id": {
                      "description": "LoRa Alliance NetID of the Packet Broker Home Network Member.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "home_network_tenant_id": {
                      "description": "Tenant ID managed by the Packet Broker Home Network Member.\nThis value is empty if it cannot be determined by the Packet Broker Router.",
                      "type": "string"
                    },
                    "hops": {
                      "description": "Hops that the message passed. Each Packet Broker Router service appends an entry.",
                      "items": {
                        "properties": {
                          "received_at": {
                            "description": "Time when the service received the message.",
                            "format": "date-time",
                            "type": "string"
                          },
                          "receiver_agent": {
                            "description": "Receiver agent.",
                            "type": "string"
                          },
                          "receiver_name": {
                            "description": "Receiver of the message.",
                            "type": "string"
                          },
                          "sender_address": {
                            "description": "Sender IP address or host name.",
                            "type": "string"
                          },
                          "sender_name": {
                            "description": "Sender of the message, typically the authorized client identifier.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "message_id": {
                      "description": "Message identifier generated by Packet Broker Router.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "received_at": {
                  "description": "Timestamp at which the Gateway Server has received the message.",
                  "format": "date-time",
                  "type": "string"
                },
                "relay": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifiers of the relay.",
                      "type": "string"
                    },
                    "wor_channel": {
                      "default": "RELAY_WOR_CHANNEL_DEFAULT",
                      "enum": [
                        "RELAY_WOR_CHANNEL_DEFAULT",
                        "RELAY_WOR_CHANNEL_SECONDARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rssi": {
                  "description": "Received signal strength indicator (dBm).\nThis value equals `channel_rssi`.",
                  "format": "float",
                  "type": "number"
                },
                "rssi_standard_deviation": {
                  "description": "Standard deviation of the RSSI during preamble.",
                  "format": "float",
                  "type": "number"
                },
                "signal_rssi": {
                  "description": "Received signal strength indicator of the signal (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "snr": {
                  "description": "Signal-to-noise ratio (dB).",
                  "format": "float",
                  "type": "number"
                },
                "time": {
                  "description": "Timestamp at the end of the transmission, provided by the gateway. The accuracy is undefined.",
                  "format": "date-time",
                  "type": "string"
                },
                "timestamp": {
                  "description": "Gateway concentrator timestamp when the Rx finished (microseconds).",
                  "format": "int64",
                  "type": "integer"
                },
                "uplink_token": {
                  "description": "Uplink token to be included in the Tx request in class A downlink; injected by gateway, Gateway Server or fNS.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this uplink.",
            "format": "byte",
            "type": "string"
          },
          "settings": {
            "description": "TxSettings contains the settings for a transmission.\nThis message is used on both uplink and downlink.\nOn downlink, this is a scheduled transmission.",
            "properties": {
              "concentrator_timestamp": {
                "description": "Concentrator timestamp for the downlink as calculated by the Gateway Server scheduler.\nThis value takes into account necessary offsets such as the RTT (Round Trip Time) and TOA (Time Of Arrival).\nThis field is set and used only by the Gateway Server.",
                "format": "int64",
                "type": "string"
              },
              "data_rate": {
                "properties": {
                  "fsk": {
                    "properties": {
                      "bit_rate": {
                        "description": "Bit rate (bps).",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "lora": {
                    "properties": {
                      "bandwidth": {
                        "description": "Bandwidth (Hz).",
                        "format": "int64",
                        "type": "integer"
                      },
                      "coding_rate": {
                        "type": "string"
                      },
                      "spreading_factor": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "lrfhss": {
                    "properties": {
                      "coding_rate": {
                        "type": "string"
                      },
                      "modulation_type": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "operating_channel_width": {
                        "description": "Operating Channel Width (Hz).",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "downlink": {
                "description": "Transmission settings for downlink.",
                "properties": {
                  "antenna_index": {
                    "description": "Index of the antenna on which the uplink was received and/or downlink must be sent.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "invert_polarization": {
                    "description": "Invert LoRa polarization; false for LoRaWAN uplink, true for downlink.",
                    "type": "boolean"
                  },
                  "tx_power": {
                    "description": "Transmission power (dBm). Only on downlink.",
                    "format": "float",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "enable_crc": {
                "description": "Send a CRC in the packet; only on uplink; on downlink, CRC should not be enabled.",
                "type": "boolean"
              },
              "frequency": {
                "description": "Frequency (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "time": {
                "description": "Time of the gateway when the uplink message was received, or when the downlink message should be transmitted.\nFor downlink, this requires the gateway to have GPS time synchronization.",
                "format": "date-time",
                "type": "string"
              },
              "timestamp": {
                "description": "Timestamp of the gateway concentrator when the uplink message was received, or when the downlink message should be transmitted (microseconds).\nOn downlink, set timestamp to 0 and time to null to use immediate scheduling.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/packages/storage/{type}/count

Returns how many application messages have been stored in the database for an application or end device.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
type string true Count upstream messages of a specific type. If not set, then all upstream messages are returned.
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
after string Count upstream messages after this timestamp only. Cannot be used in conjunction with last.
before string Count upstream messages before this timestamp only. Cannot be used in conjunction with last.
f_port integer Count uplinks on a specific FPort only.
last string Count upstream messages that have arrived in the last minutes or hours. Cannot be used in conjunction with after and before.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "count": {
    "additionalProperties": {
      "format": "int64",
      "type": "integer"
    },
    "description": "Number of stored messages by end device ID.",
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ApplicationPackageRegistry

Manage application packages and their associations.

Expand Collapse

get

/as/applications/{application_ids.application_id}/devices/{device_id}/packages

List returns the available packages for the end device.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_id string true
dev_eui string The LoRaWAN DevEUI.
join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "packages": {
    "items": {
      "properties": {
        "default_f_port": {
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/as/applications/{application_ids.application_id}/packages/associations/{f_port}

DeleteDefaultAssociation removes the default association on the FPort of the application.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
f_port integer true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/as/applications/{association.ids.end_device_ids.application_ids.application_id}/devices/{association.ids.end_device_ids.device_id}/packages/associations/{association.ids.f_port}

SetAssociation updates or creates the association on the FPort of the end device.

Expand Collapse

Request Parameters
Field Type Required Description
association.ids.end_device_ids.application_ids.application_id string true
association.ids.end_device_ids.device_id string true
association.ids.f_port integer true
Request Body
Show JSON Schema
{
  "association": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "data": {
        "type": "object"
      },
      "ids": {
        "properties": {
          "end_device_ids": {
            "properties": {
              "application_ids": {
                "type": "object"
              },
              "dev_addr": {
                "description": "The LoRaWAN DevAddr.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "dev_eui": {
                "description": "The LoRaWAN DevEUI.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "join_eui": {
                "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "package_name": {
        "type": "string"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "data": {
    "type": "object"
  },
  "ids": {
    "properties": {
      "end_device_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "package_name": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/as/applications/{default.ids.application_ids.application_id}/packages/associations/{default.ids.f_port}

SetDefaultAssociation updates or creates the default association on the FPort of the application.

Expand Collapse

Request Parameters
Field Type Required Description
default.ids.application_ids.application_id string true
default.ids.f_port integer true
Request Body
Show JSON Schema
{
  "default": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "data": {
        "type": "object"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          }
        },
        "type": "object"
      },
      "package_name": {
        "type": "string"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "data": {
    "type": "object"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "package_name": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/as/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}/packages/associations/{f_port}

DeleteAssociation removes the association on the FPort of the end device.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
f_port integer true
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{ids.application_ids.application_id}/devices/{ids.device_id}/packages/associations

ListAssociations returns all of the associations of the end device.

Expand Collapse

Request Parameters
Field Type Required Description
ids.application_ids.application_id string true
ids.device_id string true
ids.dev_eui string The LoRaWAN DevEUI.
ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
ids.dev_addr string The LoRaWAN DevAddr.
limit integer Limit the number of results per page. Each page is ordered by the FPort.
page integer Page number for pagination. 0 is interpreted as 1.
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "associations": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "data": {
          "type": "object"
        },
        "ids": {
          "properties": {
            "end_device_ids": {
              "properties": {
                "application_ids": {
                  "properties": {
                    "application_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dev_addr": {
                  "description": "The LoRaWAN DevAddr.",
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "dev_eui": {
                  "description": "The LoRaWAN DevEUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "join_eui": {
                  "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "package_name": {
          "type": "string"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{ids.application_ids.application_id}/packages/associations/{ids.f_port}

GetDefaultAssociation returns the default association registered on the FPort of the application.

Expand Collapse

Request Parameters
Field Type Required Description
ids.application_ids.application_id string true
ids.f_port integer true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "data": {
    "type": "object"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "package_name": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{ids.application_id}/packages/associations

ListDefaultAssociations returns all of the default associations of the application.

Expand Collapse

Request Parameters
Field Type Required Description
ids.application_id string true
limit integer Limit the number of results per page. Each page is ordered by the FPort.
page integer Page number for pagination. 0 is interpreted as 1.
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "defaults": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "data": {
          "type": "object"
        },
        "ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "package_name": {
          "type": "string"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/applications/{ids.end_device_ids.application_ids.application_id}/devices/{ids.end_device_ids.device_id}/packages/associations/{ids.f_port}

GetAssociation returns the association registered on the FPort of the end device.

Expand Collapse

Request Parameters
Field Type Required Description
ids.end_device_ids.application_ids.application_id string true
ids.end_device_ids.device_id string true
ids.f_port integer true
ids.end_device_ids.dev_eui string The LoRaWAN DevEUI.
ids.end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
ids.end_device_ids.dev_addr string The LoRaWAN DevAddr.
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "data": {
    "type": "object"
  },
  "ids": {
    "properties": {
      "end_device_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "f_port": {
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "package_name": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ApplicationPubSubRegistry

Manage application pubsubs.

Expand Collapse

get

/as/pubsub-formats

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "formats": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Format and description.",
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/pubsub/{application_ids.application_id}

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
field_mask string
limit integer
page integer
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "pubsubs": {
    "items": {
      "properties": {
        "aws_iot": {
          "properties": {
            "access_key": {
              "properties": {
                "access_key_id": {
                  "type": "string"
                },
                "secret_access_key": {
                  "type": "string"
                },
                "session_token": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "assume_role": {
              "properties": {
                "arn": {
                  "type": "string"
                },
                "external_id": {
                  "type": "string"
                },
                "session_duration": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "default": {
              "properties": {
                "stack_name": {
                  "description": "The stack name that is associated with the CloudFormation deployment of The Things Stack Enterprise integration.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "endpoint_address": {
              "description": "The endpoint address to connect to. If the endpoint address is left empty,\nthe integration will try to discover it.",
              "type": "string"
            },
            "region": {
              "description": "The AWS region.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "base_topic": {
          "description": "Base topic name to which the messages topic is appended.",
          "type": "string"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "downlink_ack": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_failed": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_nack": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_push": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_queue_invalidated": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_queued": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_replace": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_sent": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "format": {
          "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pub_sub_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_accept": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "location_solved": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "mqtt": {
          "description": "The MQTT provider settings.",
          "properties": {
            "client_id": {
              "type": "string"
            },
            "headers": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "HTTP headers to use on MQTT-over-Websocket connections.",
              "type": "object"
            },
            "password": {
              "type": "string"
            },
            "publish_qos": {
              "default": "AT_MOST_ONCE",
              "enum": [
                "AT_MOST_ONCE",
                "AT_LEAST_ONCE",
                "EXACTLY_ONCE"
              ],
              "type": "string"
            },
            "server_url": {
              "type": "string"
            },
            "subscribe_qos": {
              "default": "AT_MOST_ONCE",
              "enum": [
                "AT_MOST_ONCE",
                "AT_LEAST_ONCE",
                "EXACTLY_ONCE"
              ],
              "type": "string"
            },
            "tls_ca": {
              "description": "The server Root CA certificate. PEM formatted.",
              "format": "byte",
              "type": "string"
            },
            "tls_client_cert": {
              "description": "The client certificate. PEM formatted.",
              "format": "byte",
              "type": "string"
            },
            "tls_client_key": {
              "description": "The client private key. PEM formatted.",
              "format": "byte",
              "type": "string"
            },
            "use_tls": {
              "type": "boolean"
            },
            "username": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "nats": {
          "description": "The NATS provider settings.",
          "properties": {
            "server_url": {
              "description": "The server connection URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "service_data": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "uplink_message": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "uplink_normalized": {
          "properties": {
            "topic": {
              "description": "The topic on which the Application Server publishes or receives the messages.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/as/pubsub/{application_ids.application_id}/{pub_sub_id}

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
pub_sub_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/pubsub/{ids.application_ids.application_id}/{ids.pub_sub_id}

Expand Collapse

Request Parameters
Field Type Required Description
ids.application_ids.application_id string true
ids.pub_sub_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "aws_iot": {
    "properties": {
      "access_key": {
        "properties": {
          "access_key_id": {
            "type": "string"
          },
          "secret_access_key": {
            "type": "string"
          },
          "session_token": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "assume_role": {
        "properties": {
          "arn": {
            "type": "string"
          },
          "external_id": {
            "type": "string"
          },
          "session_duration": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "default": {
        "properties": {
          "stack_name": {
            "description": "The stack name that is associated with the CloudFormation deployment of The Things Stack Enterprise integration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "endpoint_address": {
        "description": "The endpoint address to connect to. If the endpoint address is left empty,\nthe integration will try to discover it.",
        "type": "string"
      },
      "region": {
        "description": "The AWS region.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "base_topic": {
    "description": "Base topic name to which the messages topic is appended.",
    "type": "string"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "downlink_ack": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_failed": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_nack": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_push": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queue_invalidated": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queued": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_replace": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_sent": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "format": {
    "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "pub_sub_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_accept": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_solved": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mqtt": {
    "description": "The MQTT provider settings.",
    "properties": {
      "client_id": {
        "type": "string"
      },
      "headers": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "HTTP headers to use on MQTT-over-Websocket connections.",
        "type": "object"
      },
      "password": {
        "type": "string"
      },
      "publish_qos": {
        "default": "AT_MOST_ONCE",
        "enum": [
          "AT_MOST_ONCE",
          "AT_LEAST_ONCE",
          "EXACTLY_ONCE"
        ],
        "type": "string"
      },
      "server_url": {
        "type": "string"
      },
      "subscribe_qos": {
        "default": "AT_MOST_ONCE",
        "enum": [
          "AT_MOST_ONCE",
          "AT_LEAST_ONCE",
          "EXACTLY_ONCE"
        ],
        "type": "string"
      },
      "tls_ca": {
        "description": "The server Root CA certificate. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "tls_client_cert": {
        "description": "The client certificate. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "tls_client_key": {
        "description": "The client private key. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "use_tls": {
        "type": "boolean"
      },
      "username": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "nats": {
    "description": "The NATS provider settings.",
    "properties": {
      "server_url": {
        "description": "The server connection URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "service_data": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "uplink_message": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "uplink_normalized": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/as/pubsub/{pubsub.ids.application_ids.application_id}

Expand Collapse

Request Parameters
Field Type Required Description
pubsub.ids.application_ids.application_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "pubsub": {
    "properties": {
      "aws_iot": {
        "properties": {
          "access_key": {
            "properties": {
              "access_key_id": {
                "type": "string"
              },
              "secret_access_key": {
                "type": "string"
              },
              "session_token": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "assume_role": {
            "properties": {
              "arn": {
                "type": "string"
              },
              "external_id": {
                "type": "string"
              },
              "session_duration": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "default": {
            "properties": {
              "stack_name": {
                "description": "The stack name that is associated with the CloudFormation deployment of The Things Stack Enterprise integration.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "endpoint_address": {
            "description": "The endpoint address to connect to. If the endpoint address is left empty,\nthe integration will try to discover it.",
            "type": "string"
          },
          "region": {
            "description": "The AWS region.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "base_topic": {
        "description": "Base topic name to which the messages topic is appended.",
        "type": "string"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "downlink_ack": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_failed": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_nack": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_push": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_queue_invalidated": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_queued": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_replace": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_sent": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "format": {
        "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "pub_sub_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_accept": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "location_solved": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mqtt": {
        "description": "The MQTT provider settings.",
        "properties": {
          "client_id": {
            "type": "string"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "HTTP headers to use on MQTT-over-Websocket connections.",
            "type": "object"
          },
          "password": {
            "type": "string"
          },
          "publish_qos": {
            "default": "AT_MOST_ONCE",
            "enum": [
              "AT_MOST_ONCE",
              "AT_LEAST_ONCE",
              "EXACTLY_ONCE"
            ],
            "type": "string"
          },
          "server_url": {
            "type": "string"
          },
          "subscribe_qos": {
            "default": "AT_MOST_ONCE",
            "enum": [
              "AT_MOST_ONCE",
              "AT_LEAST_ONCE",
              "EXACTLY_ONCE"
            ],
            "type": "string"
          },
          "tls_ca": {
            "description": "The server Root CA certificate. PEM formatted.",
            "format": "byte",
            "type": "string"
          },
          "tls_client_cert": {
            "description": "The client certificate. PEM formatted.",
            "format": "byte",
            "type": "string"
          },
          "tls_client_key": {
            "description": "The client private key. PEM formatted.",
            "format": "byte",
            "type": "string"
          },
          "use_tls": {
            "type": "boolean"
          },
          "username": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "nats": {
        "description": "The NATS provider settings.",
        "properties": {
          "server_url": {
            "description": "The server connection URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "service_data": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "uplink_message": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "uplink_normalized": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "aws_iot": {
    "properties": {
      "access_key": {
        "properties": {
          "access_key_id": {
            "type": "string"
          },
          "secret_access_key": {
            "type": "string"
          },
          "session_token": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "assume_role": {
        "properties": {
          "arn": {
            "type": "string"
          },
          "external_id": {
            "type": "string"
          },
          "session_duration": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "default": {
        "properties": {
          "stack_name": {
            "description": "The stack name that is associated with the CloudFormation deployment of The Things Stack Enterprise integration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "endpoint_address": {
        "description": "The endpoint address to connect to. If the endpoint address is left empty,\nthe integration will try to discover it.",
        "type": "string"
      },
      "region": {
        "description": "The AWS region.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "base_topic": {
    "description": "Base topic name to which the messages topic is appended.",
    "type": "string"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "downlink_ack": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_failed": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_nack": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_push": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queue_invalidated": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queued": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_replace": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_sent": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "format": {
    "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "pub_sub_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_accept": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_solved": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mqtt": {
    "description": "The MQTT provider settings.",
    "properties": {
      "client_id": {
        "type": "string"
      },
      "headers": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "HTTP headers to use on MQTT-over-Websocket connections.",
        "type": "object"
      },
      "password": {
        "type": "string"
      },
      "publish_qos": {
        "default": "AT_MOST_ONCE",
        "enum": [
          "AT_MOST_ONCE",
          "AT_LEAST_ONCE",
          "EXACTLY_ONCE"
        ],
        "type": "string"
      },
      "server_url": {
        "type": "string"
      },
      "subscribe_qos": {
        "default": "AT_MOST_ONCE",
        "enum": [
          "AT_MOST_ONCE",
          "AT_LEAST_ONCE",
          "EXACTLY_ONCE"
        ],
        "type": "string"
      },
      "tls_ca": {
        "description": "The server Root CA certificate. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "tls_client_cert": {
        "description": "The client certificate. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "tls_client_key": {
        "description": "The client private key. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "use_tls": {
        "type": "boolean"
      },
      "username": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "nats": {
    "description": "The NATS provider settings.",
    "properties": {
      "server_url": {
        "description": "The server connection URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "service_data": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "uplink_message": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "uplink_normalized": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/as/pubsub/{pubsub.ids.application_ids.application_id}/{pubsub.ids.pub_sub_id}

Expand Collapse

Request Parameters
Field Type Required Description
pubsub.ids.application_ids.application_id string true
pubsub.ids.pub_sub_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "pubsub": {
    "properties": {
      "aws_iot": {
        "properties": {
          "access_key": {
            "properties": {
              "access_key_id": {
                "type": "string"
              },
              "secret_access_key": {
                "type": "string"
              },
              "session_token": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "assume_role": {
            "properties": {
              "arn": {
                "type": "string"
              },
              "external_id": {
                "type": "string"
              },
              "session_duration": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "default": {
            "properties": {
              "stack_name": {
                "description": "The stack name that is associated with the CloudFormation deployment of The Things Stack Enterprise integration.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "endpoint_address": {
            "description": "The endpoint address to connect to. If the endpoint address is left empty,\nthe integration will try to discover it.",
            "type": "string"
          },
          "region": {
            "description": "The AWS region.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "base_topic": {
        "description": "Base topic name to which the messages topic is appended.",
        "type": "string"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "downlink_ack": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_failed": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_nack": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_push": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_queue_invalidated": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_queued": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_replace": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_sent": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "format": {
        "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "pub_sub_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_accept": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "location_solved": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mqtt": {
        "description": "The MQTT provider settings.",
        "properties": {
          "client_id": {
            "type": "string"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "HTTP headers to use on MQTT-over-Websocket connections.",
            "type": "object"
          },
          "password": {
            "type": "string"
          },
          "publish_qos": {
            "default": "AT_MOST_ONCE",
            "enum": [
              "AT_MOST_ONCE",
              "AT_LEAST_ONCE",
              "EXACTLY_ONCE"
            ],
            "type": "string"
          },
          "server_url": {
            "type": "string"
          },
          "subscribe_qos": {
            "default": "AT_MOST_ONCE",
            "enum": [
              "AT_MOST_ONCE",
              "AT_LEAST_ONCE",
              "EXACTLY_ONCE"
            ],
            "type": "string"
          },
          "tls_ca": {
            "description": "The server Root CA certificate. PEM formatted.",
            "format": "byte",
            "type": "string"
          },
          "tls_client_cert": {
            "description": "The client certificate. PEM formatted.",
            "format": "byte",
            "type": "string"
          },
          "tls_client_key": {
            "description": "The client private key. PEM formatted.",
            "format": "byte",
            "type": "string"
          },
          "use_tls": {
            "type": "boolean"
          },
          "username": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "nats": {
        "description": "The NATS provider settings.",
        "properties": {
          "server_url": {
            "description": "The server connection URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "service_data": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "uplink_message": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "uplink_normalized": {
        "properties": {
          "topic": {
            "description": "The topic on which the Application Server publishes or receives the messages.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "aws_iot": {
    "properties": {
      "access_key": {
        "properties": {
          "access_key_id": {
            "type": "string"
          },
          "secret_access_key": {
            "type": "string"
          },
          "session_token": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "assume_role": {
        "properties": {
          "arn": {
            "type": "string"
          },
          "external_id": {
            "type": "string"
          },
          "session_duration": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "default": {
        "properties": {
          "stack_name": {
            "description": "The stack name that is associated with the CloudFormation deployment of The Things Stack Enterprise integration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "endpoint_address": {
        "description": "The endpoint address to connect to. If the endpoint address is left empty,\nthe integration will try to discover it.",
        "type": "string"
      },
      "region": {
        "description": "The AWS region.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "base_topic": {
    "description": "Base topic name to which the messages topic is appended.",
    "type": "string"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "downlink_ack": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_failed": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_nack": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_push": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queue_invalidated": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queued": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_replace": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_sent": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "format": {
    "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "pub_sub_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_accept": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_solved": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mqtt": {
    "description": "The MQTT provider settings.",
    "properties": {
      "client_id": {
        "type": "string"
      },
      "headers": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "HTTP headers to use on MQTT-over-Websocket connections.",
        "type": "object"
      },
      "password": {
        "type": "string"
      },
      "publish_qos": {
        "default": "AT_MOST_ONCE",
        "enum": [
          "AT_MOST_ONCE",
          "AT_LEAST_ONCE",
          "EXACTLY_ONCE"
        ],
        "type": "string"
      },
      "server_url": {
        "type": "string"
      },
      "subscribe_qos": {
        "default": "AT_MOST_ONCE",
        "enum": [
          "AT_MOST_ONCE",
          "AT_LEAST_ONCE",
          "EXACTLY_ONCE"
        ],
        "type": "string"
      },
      "tls_ca": {
        "description": "The server Root CA certificate. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "tls_client_cert": {
        "description": "The client certificate. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "tls_client_key": {
        "description": "The client private key. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "use_tls": {
        "type": "boolean"
      },
      "username": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "nats": {
    "description": "The NATS provider settings.",
    "properties": {
      "server_url": {
        "description": "The server connection URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "service_data": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "uplink_message": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "uplink_normalized": {
    "properties": {
      "topic": {
        "description": "The topic on which the Application Server publishes or receives the messages.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ApplicationWebhookRegistry

Manage application webhooks.

Expand Collapse

get

/as/webhook-formats

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "formats": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Format and description.",
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/webhook-templates

Expand Collapse

Request Parameters
Field Type Required Description
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "templates": {
    "items": {
      "properties": {
        "base_url": {
          "description": "The base URL of the template. Can contain template fields, in RFC 6570 format.",
          "type": "string"
        },
        "create_downlink_api_key": {
          "description": "Control the creation of the downlink queue operations API key.",
          "type": "boolean"
        },
        "description": {
          "type": "string"
        },
        "documentation_url": {
          "type": "string"
        },
        "downlink_ack": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_failed": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_nack": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_queue_invalidated": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_queued": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_sent": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "field_mask": {
          "type": "string"
        },
        "fields": {
          "items": {
            "description": "ApplicationWebhookTemplateField represents a custom field that needs to be filled by the user in order to use the template.\nA field can be an API key, an username or password, or any custom platform specific field (such as region).\nThe fields are meant to be replaced inside the URLs and headers when the webhook is created.",
            "properties": {
              "default_value": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "optional": {
                "type": "boolean"
              },
              "secret": {
                "description": "Secret decides if the field should be shown in plain-text or should stay hidden.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "format": {
          "type": "string"
        },
        "headers": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The HTTP headers used by the template. Both the key and the value can contain template fields.",
          "type": "object"
        },
        "ids": {
          "properties": {
            "template_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "info_url": {
          "type": "string"
        },
        "join_accept": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "location_solved": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "logo_url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "service_data": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "uplink_message": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "uplink_normalized": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/webhook-templates/{ids.template_id}

Expand Collapse

Request Parameters
Field Type Required Description
ids.template_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "base_url": {
    "description": "The base URL of the template. Can contain template fields, in RFC 6570 format.",
    "type": "string"
  },
  "create_downlink_api_key": {
    "description": "Control the creation of the downlink queue operations API key.",
    "type": "boolean"
  },
  "description": {
    "type": "string"
  },
  "documentation_url": {
    "type": "string"
  },
  "downlink_ack": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_failed": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_nack": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queue_invalidated": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queued": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_sent": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "fields": {
    "items": {
      "description": "ApplicationWebhookTemplateField represents a custom field that needs to be filled by the user in order to use the template.\nA field can be an API key, an username or password, or any custom platform specific field (such as region).\nThe fields are meant to be replaced inside the URLs and headers when the webhook is created.",
      "properties": {
        "default_value": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "optional": {
          "type": "boolean"
        },
        "secret": {
          "description": "Secret decides if the field should be shown in plain-text or should stay hidden.",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "format": {
    "type": "string"
  },
  "headers": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "The HTTP headers used by the template. Both the key and the value can contain template fields.",
    "type": "object"
  },
  "ids": {
    "properties": {
      "template_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "info_url": {
    "type": "string"
  },
  "join_accept": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_solved": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "logo_url": {
    "type": "string"
  },
  "name": {
    "type": "string"
  },
  "service_data": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "uplink_message": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "uplink_normalized": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL. Can contain template fields, in RFC 6570 format.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/webhooks/{application_ids.application_id}

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
field_mask string
limit integer
page integer
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "webhooks": {
    "items": {
      "properties": {
        "base_url": {
          "description": "Base URL to which the message's path is appended.",
          "type": "string"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "custom_ca": {
          "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.",
          "format": "byte",
          "type": "string"
        },
        "downlink_ack": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_api_key": {
          "description": "The API key to be used for downlink queue operations.\nThe field is provided for convenience reasons, and can contain API keys with additional rights (albeit this is discouraged).",
          "type": "string"
        },
        "downlink_failed": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_nack": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_queue_invalidated": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_queued": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "downlink_sent": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "field_mask": {
          "type": "string"
        },
        "format": {
          "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
          "type": "string"
        },
        "headers": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "HTTP headers to use.",
          "type": "object"
        },
        "health_status": {
          "properties": {
            "healthy": {
              "type": "object"
            },
            "unhealthy": {
              "properties": {
                "failed_attempts": {
                  "format": "uint64",
                  "type": "string"
                },
                "last_failed_attempt_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "last_failed_attempt_details": {
                  "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".",
                  "properties": {
                    "attributes": {
                      "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.",
                      "type": "object"
                    },
                    "cause": {
                      "$ref": "#/definitions/v3ErrorDetails",
                      "description": "The error that caused this error."
                    },
                    "code": {
                      "description": "The status code of the error.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "correlation_id": {
                      "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.",
                      "type": "string"
                    },
                    "details": {
                      "description": "The details of the error.",
                      "items": {
                        "additionalProperties": {},
                        "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
                        "properties": {
                          "@type": {
                            "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "message_format": {
                      "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the error.",
                      "type": "string"
                    },
                    "namespace": {
                      "description": "Namespace of the error (typically the package name in The Things Stack).",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "webhook_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_accept": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "location_solved": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "paused": {
          "description": "Set to temporarily pause forwarding uplink data to this end point and receiving downlinks from this end point.",
          "type": "boolean"
        },
        "queue": {
          "properties": {
            "enabled": {
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "service_data": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "template_fields": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The value of the fields used by the template. Maps field.id to the value.",
          "type": "object"
        },
        "template_ids": {
          "properties": {
            "template_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "uplink_message": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "uplink_normalized": {
          "properties": {
            "path": {
              "description": "Path to append to the base URL.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/as/webhooks/{application_ids.application_id}/{webhook_id}

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
webhook_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/as/webhooks/{ids.application_ids.application_id}/{ids.webhook_id}

Expand Collapse

Request Parameters
Field Type Required Description
ids.application_ids.application_id string true
ids.webhook_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "base_url": {
    "description": "Base URL to which the message's path is appended.",
    "type": "string"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "custom_ca": {
    "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.",
    "format": "byte",
    "type": "string"
  },
  "downlink_ack": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_api_key": {
    "description": "The API key to be used for downlink queue operations.\nThe field is provided for convenience reasons, and can contain API keys with additional rights (albeit this is discouraged).",
    "type": "string"
  },
  "downlink_failed": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_nack": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queue_invalidated": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queued": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_sent": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "format": {
    "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
    "type": "string"
  },
  "headers": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "HTTP headers to use.",
    "type": "object"
  },
  "health_status": {
    "properties": {
      "healthy": {
        "type": "object"
      },
      "unhealthy": {
        "properties": {
          "failed_attempts": {
            "format": "uint64",
            "type": "string"
          },
          "last_failed_attempt_at": {
            "format": "date-time",
            "type": "string"
          },
          "last_failed_attempt_details": {
            "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".",
            "properties": {
              "attributes": {
                "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.",
                "type": "object"
              },
              "cause": {
                "$ref": "#/definitions/v3ErrorDetails",
                "description": "The error that caused this error."
              },
              "code": {
                "description": "The status code of the error.",
                "format": "int64",
                "type": "integer"
              },
              "correlation_id": {
                "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.",
                "type": "string"
              },
              "details": {
                "description": "The details of the error.",
                "items": {
                  "additionalProperties": {},
                  "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
                  "properties": {
                    "@type": {
                      "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "message_format": {
                "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.",
                "type": "string"
              },
              "name": {
                "description": "Name of the error.",
                "type": "string"
              },
              "namespace": {
                "description": "Namespace of the error (typically the package name in The Things Stack).",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "webhook_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_accept": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_solved": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "paused": {
    "description": "Set to temporarily pause forwarding uplink data to this end point and receiving downlinks from this end point.",
    "type": "boolean"
  },
  "queue": {
    "properties": {
      "enabled": {
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "service_data": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "template_fields": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "The value of the fields used by the template. Maps field.id to the value.",
    "type": "object"
  },
  "template_ids": {
    "properties": {
      "template_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "uplink_message": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "uplink_normalized": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/as/webhooks/{webhook.ids.application_ids.application_id}

Expand Collapse

Request Parameters
Field Type Required Description
webhook.ids.application_ids.application_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "webhook": {
    "properties": {
      "base_url": {
        "description": "Base URL to which the message's path is appended.",
        "type": "string"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "custom_ca": {
        "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "downlink_ack": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_api_key": {
        "description": "The API key to be used for downlink queue operations.\nThe field is provided for convenience reasons, and can contain API keys with additional rights (albeit this is discouraged).",
        "type": "string"
      },
      "downlink_failed": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_nack": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_queue_invalidated": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_queued": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_sent": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "field_mask": {
        "type": "string"
      },
      "format": {
        "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
        "type": "string"
      },
      "headers": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "HTTP headers to use.",
        "type": "object"
      },
      "health_status": {
        "properties": {
          "healthy": {
            "type": "object"
          },
          "unhealthy": {
            "properties": {
              "failed_attempts": {
                "format": "uint64",
                "type": "string"
              },
              "last_failed_attempt_at": {
                "format": "date-time",
                "type": "string"
              },
              "last_failed_attempt_details": {
                "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".",
                "properties": {
                  "attributes": {
                    "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.",
                    "type": "object"
                  },
                  "cause": {
                    "$ref": "#/definitions/v3ErrorDetails",
                    "description": "The error that caused this error."
                  },
                  "code": {
                    "description": "The status code of the error.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "correlation_id": {
                    "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.",
                    "type": "string"
                  },
                  "details": {
                    "description": "The details of the error.",
                    "items": {
                      "additionalProperties": {},
                      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
                      "properties": {
                        "@type": {
                          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "message_format": {
                    "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name of the error.",
                    "type": "string"
                  },
                  "namespace": {
                    "description": "Namespace of the error (typically the package name in The Things Stack).",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "webhook_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_accept": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "location_solved": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "paused": {
        "description": "Set to temporarily pause forwarding uplink data to this end point and receiving downlinks from this end point.",
        "type": "boolean"
      },
      "queue": {
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "service_data": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "template_fields": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "The value of the fields used by the template. Maps field.id to the value.",
        "type": "object"
      },
      "template_ids": {
        "properties": {
          "template_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "uplink_message": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "uplink_normalized": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "base_url": {
    "description": "Base URL to which the message's path is appended.",
    "type": "string"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "custom_ca": {
    "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.",
    "format": "byte",
    "type": "string"
  },
  "downlink_ack": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_api_key": {
    "description": "The API key to be used for downlink queue operations.\nThe field is provided for convenience reasons, and can contain API keys with additional rights (albeit this is discouraged).",
    "type": "string"
  },
  "downlink_failed": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_nack": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queue_invalidated": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queued": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_sent": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "format": {
    "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
    "type": "string"
  },
  "headers": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "HTTP headers to use.",
    "type": "object"
  },
  "health_status": {
    "properties": {
      "healthy": {
        "type": "object"
      },
      "unhealthy": {
        "properties": {
          "failed_attempts": {
            "format": "uint64",
            "type": "string"
          },
          "last_failed_attempt_at": {
            "format": "date-time",
            "type": "string"
          },
          "last_failed_attempt_details": {
            "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".",
            "properties": {
              "attributes": {
                "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.",
                "type": "object"
              },
              "cause": {
                "$ref": "#/definitions/v3ErrorDetails",
                "description": "The error that caused this error."
              },
              "code": {
                "description": "The status code of the error.",
                "format": "int64",
                "type": "integer"
              },
              "correlation_id": {
                "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.",
                "type": "string"
              },
              "details": {
                "description": "The details of the error.",
                "items": {
                  "additionalProperties": {},
                  "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
                  "properties": {
                    "@type": {
                      "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "message_format": {
                "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.",
                "type": "string"
              },
              "name": {
                "description": "Name of the error.",
                "type": "string"
              },
              "namespace": {
                "description": "Namespace of the error (typically the package name in The Things Stack).",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "webhook_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_accept": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_solved": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "paused": {
    "description": "Set to temporarily pause forwarding uplink data to this end point and receiving downlinks from this end point.",
    "type": "boolean"
  },
  "queue": {
    "properties": {
      "enabled": {
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "service_data": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "template_fields": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "The value of the fields used by the template. Maps field.id to the value.",
    "type": "object"
  },
  "template_ids": {
    "properties": {
      "template_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "uplink_message": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "uplink_normalized": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/as/webhooks/{webhook.ids.application_ids.application_id}/{webhook.ids.webhook_id}

Expand Collapse

Request Parameters
Field Type Required Description
webhook.ids.application_ids.application_id string true
webhook.ids.webhook_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "type": "string"
  },
  "webhook": {
    "properties": {
      "base_url": {
        "description": "Base URL to which the message's path is appended.",
        "type": "string"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "custom_ca": {
        "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.",
        "format": "byte",
        "type": "string"
      },
      "downlink_ack": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_api_key": {
        "description": "The API key to be used for downlink queue operations.\nThe field is provided for convenience reasons, and can contain API keys with additional rights (albeit this is discouraged).",
        "type": "string"
      },
      "downlink_failed": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_nack": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_queue_invalidated": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_queued": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_sent": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "field_mask": {
        "type": "string"
      },
      "format": {
        "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
        "type": "string"
      },
      "headers": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "HTTP headers to use.",
        "type": "object"
      },
      "health_status": {
        "properties": {
          "healthy": {
            "type": "object"
          },
          "unhealthy": {
            "properties": {
              "failed_attempts": {
                "format": "uint64",
                "type": "string"
              },
              "last_failed_attempt_at": {
                "format": "date-time",
                "type": "string"
              },
              "last_failed_attempt_details": {
                "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".",
                "properties": {
                  "attributes": {
                    "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.",
                    "type": "object"
                  },
                  "cause": {
                    "$ref": "#/definitions/v3ErrorDetails",
                    "description": "The error that caused this error."
                  },
                  "code": {
                    "description": "The status code of the error.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "correlation_id": {
                    "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.",
                    "type": "string"
                  },
                  "details": {
                    "description": "The details of the error.",
                    "items": {
                      "additionalProperties": {},
                      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
                      "properties": {
                        "@type": {
                          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "message_format": {
                    "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name of the error.",
                    "type": "string"
                  },
                  "namespace": {
                    "description": "Namespace of the error (typically the package name in The Things Stack).",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "webhook_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_accept": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "location_solved": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "paused": {
        "description": "Set to temporarily pause forwarding uplink data to this end point and receiving downlinks from this end point.",
        "type": "boolean"
      },
      "queue": {
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "service_data": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "template_fields": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "The value of the fields used by the template. Maps field.id to the value.",
        "type": "object"
      },
      "template_ids": {
        "properties": {
          "template_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "uplink_message": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "uplink_normalized": {
        "properties": {
          "path": {
            "description": "Path to append to the base URL.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "base_url": {
    "description": "Base URL to which the message's path is appended.",
    "type": "string"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "custom_ca": {
    "description": "Custom CA certificate for the server where the webhooks are sent to. PEM formatted.",
    "format": "byte",
    "type": "string"
  },
  "downlink_ack": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_api_key": {
    "description": "The API key to be used for downlink queue operations.\nThe field is provided for convenience reasons, and can contain API keys with additional rights (albeit this is discouraged).",
    "type": "string"
  },
  "downlink_failed": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_nack": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queue_invalidated": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_queued": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_sent": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "format": {
    "description": "The format to use for the body.\nSupported values depend on the Application Server configuration.",
    "type": "string"
  },
  "headers": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "HTTP headers to use.",
    "type": "object"
  },
  "health_status": {
    "properties": {
      "healthy": {
        "type": "object"
      },
      "unhealthy": {
        "properties": {
          "failed_attempts": {
            "format": "uint64",
            "type": "string"
          },
          "last_failed_attempt_at": {
            "format": "date-time",
            "type": "string"
          },
          "last_failed_attempt_details": {
            "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".",
            "properties": {
              "attributes": {
                "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.",
                "type": "object"
              },
              "cause": {
                "$ref": "#/definitions/v3ErrorDetails",
                "description": "The error that caused this error."
              },
              "code": {
                "description": "The status code of the error.",
                "format": "int64",
                "type": "integer"
              },
              "correlation_id": {
                "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.",
                "type": "string"
              },
              "details": {
                "description": "The details of the error.",
                "items": {
                  "additionalProperties": {},
                  "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
                  "properties": {
                    "@type": {
                      "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "message_format": {
                "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.",
                "type": "string"
              },
              "name": {
                "description": "Name of the error.",
                "type": "string"
              },
              "namespace": {
                "description": "Namespace of the error (typically the package name in The Things Stack).",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "webhook_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_accept": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_solved": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "paused": {
    "description": "Set to temporarily pause forwarding uplink data to this end point and receiving downlinks from this end point.",
    "type": "boolean"
  },
  "queue": {
    "properties": {
      "enabled": {
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "service_data": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "template_fields": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "The value of the fields used by the template. Maps field.id to the value.",
    "type": "object"
  },
  "template_ids": {
    "properties": {
      "template_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "uplink_message": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "uplink_normalized": {
    "properties": {
      "path": {
        "description": "Path to append to the base URL.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ClientRegistry

Manage OAuth client registrations.

Expand Collapse

get

/clients

List OAuth clients where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the OAuth clients the caller has access to. Similar to Get, this selects the fields specified in the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the client fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted clients.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "clients": {
    "items": {
      "description": "An OAuth client on the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "endorsed": {
          "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
          "type": "boolean"
        },
        "grants": {
          "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
          "items": {
            "default": "GRANT_AUTHORIZATION_CODE",
            "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
            "enum": [
              "GRANT_AUTHORIZATION_CODE",
              "GRANT_PASSWORD",
              "GRANT_REFRESH_TOKEN"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "ids": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "logout_redirect_uris": {
          "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "redirect_uris": {
          "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "rights": {
          "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "secret": {
          "description": "The client secret is only visible to collaborators of the client.",
          "type": "string"
        },
        "skip_authorization": {
          "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
          "type": "boolean"
        },
        "state": {
          "default": "STATE_REQUESTED",
          "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
          "enum": [
            "STATE_REQUESTED",
            "STATE_APPROVED",
            "STATE_REJECTED",
            "STATE_FLAGGED",
            "STATE_SUSPENDED"
          ],
          "type": "string"
        },
        "state_description": {
          "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/clients/{client.ids.client_id}

Update the OAuth client, changing the fields specified by the field mask to the provided values.

Expand Collapse

Request Parameters
Field Type Required Description
client.ids.client_id string true
Request Body
Show JSON Schema
{
  "client": {
    "description": "An OAuth client on the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "endorsed": {
        "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
        "type": "boolean"
      },
      "grants": {
        "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
        "items": {
          "default": "GRANT_AUTHORIZATION_CODE",
          "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
          "enum": [
            "GRANT_AUTHORIZATION_CODE",
            "GRANT_PASSWORD",
            "GRANT_REFRESH_TOKEN"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "ids": {
        "description": "The identifiers of the OAuth client. These are public and can be seen by any authenticated user in the network.",
        "title": "The identifiers of the OAuth client. These are public and can be seen by any authenticated user in the network.",
        "type": "object"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "logout_redirect_uris": {
        "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "name": {
        "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "redirect_uris": {
        "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "rights": {
        "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "secret": {
        "description": "The client secret is only visible to collaborators of the client.",
        "type": "string"
      },
      "skip_authorization": {
        "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
        "type": "boolean"
      },
      "state": {
        "default": "STATE_REQUESTED",
        "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
        "enum": [
          "STATE_REQUESTED",
          "STATE_APPROVED",
          "STATE_REJECTED",
          "STATE_FLAGGED",
          "STATE_SUSPENDED"
        ],
        "type": "string"
      },
      "state_description": {
        "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the client fields that should be updated.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "endorsed": {
    "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
    "type": "boolean"
  },
  "grants": {
    "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
    "items": {
      "default": "GRANT_AUTHORIZATION_CODE",
      "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
      "enum": [
        "GRANT_AUTHORIZATION_CODE",
        "GRANT_PASSWORD",
        "GRANT_REFRESH_TOKEN"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "ids": {
    "properties": {
      "client_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "logout_redirect_uris": {
    "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "name": {
    "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "redirect_uris": {
    "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "rights": {
    "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "secret": {
    "description": "The client secret is only visible to collaborators of the client.",
    "type": "string"
  },
  "skip_authorization": {
    "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
    "type": "boolean"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/clients/{client_ids.client_id}

Get the OAuth client with the given identifiers, selecting the fields specified in the field mask.

Expand Collapse

More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
client_ids.client_id string true
field_mask string The names of the client fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "endorsed": {
    "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
    "type": "boolean"
  },
  "grants": {
    "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
    "items": {
      "default": "GRANT_AUTHORIZATION_CODE",
      "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
      "enum": [
        "GRANT_AUTHORIZATION_CODE",
        "GRANT_PASSWORD",
        "GRANT_REFRESH_TOKEN"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "ids": {
    "properties": {
      "client_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "logout_redirect_uris": {
    "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "name": {
    "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "redirect_uris": {
    "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "rights": {
    "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "secret": {
    "description": "The client secret is only visible to collaborators of the client.",
    "type": "string"
  },
  "skip_authorization": {
    "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
    "type": "boolean"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/clients/{client_id}

Delete the OAuth client.

Expand Collapse

This may not release the client ID for reuse.

Request Parameters
Field Type Required Description
client_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/clients/{client_id}/purge

Purge the client.

Expand Collapse

This will release the client ID for reuse.

Request Parameters
Field Type Required Description
client_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/clients/{client_id}/restore

Restore a recently deleted client.

Expand Collapse

Deployment configuration may specify if, and for how long after deletion, entities can be restored.

Request Parameters
Field Type Required Description
client_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/organizations/{collaborator.organization_ids.organization_id}/clients

List OAuth clients where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the OAuth clients the caller has access to. Similar to Get, this selects the fields specified in the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the client fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted clients.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "clients": {
    "items": {
      "description": "An OAuth client on the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "endorsed": {
          "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
          "type": "boolean"
        },
        "grants": {
          "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
          "items": {
            "default": "GRANT_AUTHORIZATION_CODE",
            "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
            "enum": [
              "GRANT_AUTHORIZATION_CODE",
              "GRANT_PASSWORD",
              "GRANT_REFRESH_TOKEN"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "ids": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "logout_redirect_uris": {
          "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "redirect_uris": {
          "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "rights": {
          "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "secret": {
          "description": "The client secret is only visible to collaborators of the client.",
          "type": "string"
        },
        "skip_authorization": {
          "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
          "type": "boolean"
        },
        "state": {
          "default": "STATE_REQUESTED",
          "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
          "enum": [
            "STATE_REQUESTED",
            "STATE_APPROVED",
            "STATE_REJECTED",
            "STATE_FLAGGED",
            "STATE_SUSPENDED"
          ],
          "type": "string"
        },
        "state_description": {
          "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/organizations/{collaborator.organization_ids.organization_id}/clients

Create a new OAuth client.

Expand Collapse

This also sets the given organization or user as first collaborator with all possible rights.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
Request Body
Show JSON Schema
{
  "client": {
    "description": "An OAuth client on the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "endorsed": {
        "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
        "type": "boolean"
      },
      "grants": {
        "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
        "items": {
          "default": "GRANT_AUTHORIZATION_CODE",
          "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
          "enum": [
            "GRANT_AUTHORIZATION_CODE",
            "GRANT_PASSWORD",
            "GRANT_REFRESH_TOKEN"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "ids": {
        "properties": {
          "client_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "logout_redirect_uris": {
        "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "name": {
        "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "redirect_uris": {
        "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "rights": {
        "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "secret": {
        "description": "The client secret is only visible to collaborators of the client.",
        "type": "string"
      },
      "skip_authorization": {
        "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
        "type": "boolean"
      },
      "state": {
        "default": "STATE_REQUESTED",
        "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
        "enum": [
          "STATE_REQUESTED",
          "STATE_APPROVED",
          "STATE_REJECTED",
          "STATE_FLAGGED",
          "STATE_SUSPENDED"
        ],
        "type": "string"
      },
      "state_description": {
        "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "collaborator": {
    "description": "Collaborator to grant all rights on the newly created client.",
    "properties": {
      "organization_ids": {
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "title": "Collaborator to grant all rights on the newly created client.",
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "endorsed": {
    "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
    "type": "boolean"
  },
  "grants": {
    "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
    "items": {
      "default": "GRANT_AUTHORIZATION_CODE",
      "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
      "enum": [
        "GRANT_AUTHORIZATION_CODE",
        "GRANT_PASSWORD",
        "GRANT_REFRESH_TOKEN"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "ids": {
    "properties": {
      "client_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "logout_redirect_uris": {
    "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "name": {
    "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "redirect_uris": {
    "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "rights": {
    "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "secret": {
    "description": "The client secret is only visible to collaborators of the client.",
    "type": "string"
  },
  "skip_authorization": {
    "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
    "type": "boolean"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/users/{collaborator.user_ids.user_id}/clients

List OAuth clients where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the OAuth clients the caller has access to. Similar to Get, this selects the fields specified in the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the client fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted clients.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "clients": {
    "items": {
      "description": "An OAuth client on the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "endorsed": {
          "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
          "type": "boolean"
        },
        "grants": {
          "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
          "items": {
            "default": "GRANT_AUTHORIZATION_CODE",
            "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
            "enum": [
              "GRANT_AUTHORIZATION_CODE",
              "GRANT_PASSWORD",
              "GRANT_REFRESH_TOKEN"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "ids": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "logout_redirect_uris": {
          "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "redirect_uris": {
          "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "rights": {
          "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "secret": {
          "description": "The client secret is only visible to collaborators of the client.",
          "type": "string"
        },
        "skip_authorization": {
          "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
          "type": "boolean"
        },
        "state": {
          "default": "STATE_REQUESTED",
          "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
          "enum": [
            "STATE_REQUESTED",
            "STATE_APPROVED",
            "STATE_REJECTED",
            "STATE_FLAGGED",
            "STATE_SUSPENDED"
          ],
          "type": "string"
        },
        "state_description": {
          "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users/{collaborator.user_ids.user_id}/clients

Create a new OAuth client.

Expand Collapse

This also sets the given organization or user as first collaborator with all possible rights.

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "client": {
    "description": "An OAuth client on the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "endorsed": {
        "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
        "type": "boolean"
      },
      "grants": {
        "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
        "items": {
          "default": "GRANT_AUTHORIZATION_CODE",
          "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
          "enum": [
            "GRANT_AUTHORIZATION_CODE",
            "GRANT_PASSWORD",
            "GRANT_REFRESH_TOKEN"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "ids": {
        "properties": {
          "client_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "logout_redirect_uris": {
        "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "name": {
        "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "redirect_uris": {
        "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "rights": {
        "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "secret": {
        "description": "The client secret is only visible to collaborators of the client.",
        "type": "string"
      },
      "skip_authorization": {
        "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
        "type": "boolean"
      },
      "state": {
        "default": "STATE_REQUESTED",
        "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
        "enum": [
          "STATE_REQUESTED",
          "STATE_APPROVED",
          "STATE_REJECTED",
          "STATE_FLAGGED",
          "STATE_SUSPENDED"
        ],
        "type": "string"
      },
      "state_description": {
        "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "collaborator": {
    "description": "Collaborator to grant all rights on the newly created client.",
    "properties": {
      "organization_ids": {
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "title": "Collaborator to grant all rights on the newly created client.",
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this client. Typically used for organizing clients or for storing integration-specific data.",
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this client. Typically used to indicate who to contact with technical/security questions about the application.\nThis information is public and can be seen by any authenticated user in the network.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the OAuth client was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the OAuth client was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the OAuth client. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "endorsed": {
    "description": "If set, the authorization page will show endorsement.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
    "type": "boolean"
  },
  "grants": {
    "description": "OAuth flows that can be used for the client to get a token.\nThis information is public and can be seen by any authenticated user in the network.\nAfter a client is created, this field can only be modified by admins.",
    "items": {
      "default": "GRANT_AUTHORIZATION_CODE",
      "description": "The OAuth2 flows an OAuth client can use to get an access token.\n\n - GRANT_AUTHORIZATION_CODE: Grant type used to exchange an authorization code for an access token.\n - GRANT_PASSWORD: Grant type used to exchange a user ID and password for an access token.\n - GRANT_REFRESH_TOKEN: Grant type used to exchange a refresh token for an access token.",
      "enum": [
        "GRANT_AUTHORIZATION_CODE",
        "GRANT_PASSWORD",
        "GRANT_REFRESH_TOKEN"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "ids": {
    "properties": {
      "client_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "logout_redirect_uris": {
    "description": "The allowed logout redirect URIs against which client initiated logout\nrequests are checked. If the authorization request does not pass a redirect\nURI, the first one from this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "name": {
    "description": "The name of the OAuth client. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "redirect_uris": {
    "description": "The allowed redirect URIs against which authorization requests are checked.\nIf the authorization request does not pass a redirect URI, the first one\nfrom this list is taken.\nThis information is public and can be seen by any authenticated user in the network.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "rights": {
    "description": "Rights denotes what rights the client will have access to.\nThis information is public and can be seen by any authenticated user in the network.\nUsers that previously authorized this client will have to re-authorize the\nclient after rights are added to this list.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "secret": {
    "description": "The client secret is only visible to collaborators of the client.",
    "type": "string"
  },
  "skip_authorization": {
    "description": "If set, the authorization page will be skipped.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by admins.",
    "type": "boolean"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the OAuth client was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ClientAccess

Manage access to OAuth clients.

Expand Collapse

get

/clients/{client_ids.client_id}/collaborator/organization/{collaborator.organization_ids.organization_id}

Get the rights of a collaborator (member) of the client.

Expand Collapse

Pseudo-rights in the response (such as the "_ALL" right) are not expanded.

Request Parameters
Field Type Required Description
client_ids.client_id string true
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "ids": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/clients/{client_ids.client_id}/collaborator/user/{collaborator.user_ids.user_id}

Get the rights of a collaborator (member) of the client.

Expand Collapse

Pseudo-rights in the response (such as the "_ALL" right) are not expanded.

Request Parameters
Field Type Required Description
client_ids.client_id string true
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "ids": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/clients/{client_ids.client_id}/collaborators

List the collaborators on this OAuth client.

Expand Collapse

Request Parameters
Field Type Required Description
client_ids.client_id string true
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "collaborators": {
    "items": {
      "properties": {
        "ids": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "rights": {
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/clients/{client_ids.client_id}/collaborators

Set the rights of a collaborator (member) on the OAuth client.

Expand Collapse

This method can also be used to delete the collaborator, by giving them no rights. The caller is required to have all assigned or/and removed rights.

Request Parameters
Field Type Required Description
client_ids.client_id string true
Request Body
Show JSON Schema
{
  "client_ids": {
    "type": "object"
  },
  "collaborator": {
    "properties": {
      "ids": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "rights": {
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/clients/{client_ids.client_id}/collaborators/organization/{collaborator_ids.organization_ids.organization_id}

DeleteCollaborator removes a collaborator from a client.

Expand Collapse

Request Parameters
Field Type Required Description
client_ids.client_id string true
collaborator_ids.organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator_ids.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/clients/{client_ids.client_id}/collaborators/user/{collaborator_ids.user_ids.user_id}

DeleteCollaborator removes a collaborator from a client.

Expand Collapse

Request Parameters
Field Type Required Description
client_ids.client_id string true
collaborator_ids.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator_ids.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/clients/{client_id}/rights

List the rights the caller has on this application.

Expand Collapse

Request Parameters
Field Type Required Description
client_id string true
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

Configuration

Retrieve LoRaWAN network configuration options.

Expand Collapse

get

/configuration/bands

Expand Collapse

Request Parameters
Field Type Required Description
band_id string Optional Band ID to filter the results. If unused, all supported Bands are returned.
phy_version string Optional PHY version to filter the results. If unused, all supported versions are returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "descriptions": {
    "additionalProperties": {
      "properties": {
        "band": {
          "additionalProperties": {
            "properties": {
              "adr_ack_limit": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              },
              "beacon": {
                "properties": {
                  "coding_rate": {
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequencies": {
                    "items": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "boot_dwell_time": {
                "properties": {
                  "downlinks": {
                    "type": "boolean"
                  },
                  "uplinks": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "cf_list_type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              },
              "data_rates": {
                "additionalProperties": {
                  "properties": {
                    "rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              "default_max_eirp": {
                "format": "float",
                "type": "number"
              },
              "default_rx2_parameters": {
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_channels": {
                "items": {
                  "properties": {
                    "frequency": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "freq_multiplier": {
                "format": "uint64",
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "implements_cf_list": {
                "type": "boolean"
              },
              "join_accept_delay_1": {
                "type": "string"
              },
              "join_accept_delay_2": {
                "type": "string"
              },
              "max_adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "max_downlink_channels": {
                "format": "int64",
                "type": "integer"
              },
              "max_fcnt_gap": {
                "format": "uint64",
                "type": "string"
              },
              "max_retransmit_timeout": {
                "type": "string"
              },
              "max_uplink_channels": {
                "format": "int64",
                "type": "integer"
              },
              "min_retransmit_timeout": {
                "type": "string"
              },
              "ping_slot_frequencies": {
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "receive_delay_1": {
                "type": "string"
              },
              "receive_delay_2": {
                "type": "string"
              },
              "relay": {
                "properties": {
                  "wor_channels": {
                    "items": {
                      "properties": {
                        "ack_frequency": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "relay_forward_delay": {
                "type": "string"
              },
              "relay_receive_delay": {
                "type": "string"
              },
              "sub_bands": {
                "items": {
                  "properties": {
                    "duty_cycle": {
                      "format": "float",
                      "type": "number"
                    },
                    "max_eirp": {
                      "format": "float",
                      "type": "number"
                    },
                    "max_frequency": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "min_frequency": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "supports_dynamic_adr": {
                "type": "boolean"
              },
              "tx_offset": {
                "items": {
                  "format": "float",
                  "type": "number"
                },
                "type": "array"
              },
              "tx_param_setup_req_support": {
                "type": "boolean"
              },
              "uplink_channels": {
                "items": {
                  "properties": {
                    "frequency": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/configuration/bands/{band_id}

Expand Collapse

Request Parameters
Field Type Required Description
band_id string true Optional Band ID to filter the results. If unused, all supported Bands are returned.
phy_version string Optional PHY version to filter the results. If unused, all supported versions are returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "descriptions": {
    "additionalProperties": {
      "properties": {
        "band": {
          "additionalProperties": {
            "properties": {
              "adr_ack_limit": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              },
              "beacon": {
                "properties": {
                  "coding_rate": {
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequencies": {
                    "items": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "boot_dwell_time": {
                "properties": {
                  "downlinks": {
                    "type": "boolean"
                  },
                  "uplinks": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "cf_list_type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              },
              "data_rates": {
                "additionalProperties": {
                  "properties": {
                    "rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              "default_max_eirp": {
                "format": "float",
                "type": "number"
              },
              "default_rx2_parameters": {
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_channels": {
                "items": {
                  "properties": {
                    "frequency": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "freq_multiplier": {
                "format": "uint64",
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "implements_cf_list": {
                "type": "boolean"
              },
              "join_accept_delay_1": {
                "type": "string"
              },
              "join_accept_delay_2": {
                "type": "string"
              },
              "max_adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "max_downlink_channels": {
                "format": "int64",
                "type": "integer"
              },
              "max_fcnt_gap": {
                "format": "uint64",
                "type": "string"
              },
              "max_retransmit_timeout": {
                "type": "string"
              },
              "max_uplink_channels": {
                "format": "int64",
                "type": "integer"
              },
              "min_retransmit_timeout": {
                "type": "string"
              },
              "ping_slot_frequencies": {
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "receive_delay_1": {
                "type": "string"
              },
              "receive_delay_2": {
                "type": "string"
              },
              "relay": {
                "properties": {
                  "wor_channels": {
                    "items": {
                      "properties": {
                        "ack_frequency": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "relay_forward_delay": {
                "type": "string"
              },
              "relay_receive_delay": {
                "type": "string"
              },
              "sub_bands": {
                "items": {
                  "properties": {
                    "duty_cycle": {
                      "format": "float",
                      "type": "number"
                    },
                    "max_eirp": {
                      "format": "float",
                      "type": "number"
                    },
                    "max_frequency": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "min_frequency": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "supports_dynamic_adr": {
                "type": "boolean"
              },
              "tx_offset": {
                "items": {
                  "format": "float",
                  "type": "number"
                },
                "type": "array"
              },
              "tx_param_setup_req_support": {
                "type": "boolean"
              },
              "uplink_channels": {
                "items": {
                  "properties": {
                    "frequency": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/configuration/bands/{band_id}/{phy_version}

Expand Collapse

Request Parameters
Field Type Required Description
band_id string true Optional Band ID to filter the results. If unused, all supported Bands are returned.
phy_version string true Optional PHY version to filter the results. If unused, all supported versions are returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "descriptions": {
    "additionalProperties": {
      "properties": {
        "band": {
          "additionalProperties": {
            "properties": {
              "adr_ack_limit": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              },
              "beacon": {
                "properties": {
                  "coding_rate": {
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequencies": {
                    "items": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "boot_dwell_time": {
                "properties": {
                  "downlinks": {
                    "type": "boolean"
                  },
                  "uplinks": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "cf_list_type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              },
              "data_rates": {
                "additionalProperties": {
                  "properties": {
                    "rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              "default_max_eirp": {
                "format": "float",
                "type": "number"
              },
              "default_rx2_parameters": {
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_channels": {
                "items": {
                  "properties": {
                    "frequency": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "freq_multiplier": {
                "format": "uint64",
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "implements_cf_list": {
                "type": "boolean"
              },
              "join_accept_delay_1": {
                "type": "string"
              },
              "join_accept_delay_2": {
                "type": "string"
              },
              "max_adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "max_downlink_channels": {
                "format": "int64",
                "type": "integer"
              },
              "max_fcnt_gap": {
                "format": "uint64",
                "type": "string"
              },
              "max_retransmit_timeout": {
                "type": "string"
              },
              "max_uplink_channels": {
                "format": "int64",
                "type": "integer"
              },
              "min_retransmit_timeout": {
                "type": "string"
              },
              "ping_slot_frequencies": {
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "receive_delay_1": {
                "type": "string"
              },
              "receive_delay_2": {
                "type": "string"
              },
              "relay": {
                "properties": {
                  "wor_channels": {
                    "items": {
                      "properties": {
                        "ack_frequency": {
                          "format": "uint64",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "relay_forward_delay": {
                "type": "string"
              },
              "relay_receive_delay": {
                "type": "string"
              },
              "sub_bands": {
                "items": {
                  "properties": {
                    "duty_cycle": {
                      "format": "float",
                      "type": "number"
                    },
                    "max_eirp": {
                      "format": "float",
                      "type": "number"
                    },
                    "max_frequency": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "min_frequency": {
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "supports_dynamic_adr": {
                "type": "boolean"
              },
              "tx_offset": {
                "items": {
                  "format": "float",
                  "type": "number"
                },
                "type": "array"
              },
              "tx_param_setup_req_support": {
                "type": "boolean"
              },
              "uplink_channels": {
                "items": {
                  "properties": {
                    "frequency": {
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/configuration/frequency-plans

Expand Collapse

Request Parameters
Field Type Required Description
base_frequency integer Optional base frequency in MHz for hardware support (433, 470, 868 or 915)
band_id string Optional Band ID to filter the results.
gateways_only boolean Optional field to include only gateway related results.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "frequency_plans": {
    "items": {
      "properties": {
        "band_id": {
          "type": "string"
        },
        "base_frequency": {
          "format": "int64",
          "title": "Base frequency in MHz for hardware support (433, 470, 868 or 915)",
          "type": "integer"
        },
        "base_id": {
          "description": "The ID of the frequency that the current frequency plan is based on.",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/configuration/phy-versions

Returns a list of supported LoRaWAN PHY Versions for the given Band ID.

Expand Collapse

Request Parameters
Field Type Required Description
band_id string Optional Band ID to filter the results. If unused, all supported Bands and their versions are returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "version_info": {
    "items": {
      "properties": {
        "band_id": {
          "type": "string"
        },
        "phy_versions": {
          "items": {
            "default": "PHY_UNKNOWN",
            "enum": [
              "PHY_UNKNOWN",
              "PHY_V1_0",
              "TS001_V1_0",
              "PHY_V1_0_1",
              "TS001_V1_0_1",
              "PHY_V1_0_2_REV_A",
              "RP001_V1_0_2",
              "PHY_V1_0_2_REV_B",
              "RP001_V1_0_2_REV_B",
              "PHY_V1_1_REV_A",
              "RP001_V1_1_REV_A",
              "PHY_V1_1_REV_B",
              "RP001_V1_1_REV_B",
              "PHY_V1_0_3_REV_A",
              "RP001_V1_0_3_REV_A",
              "RP002_V1_0_0",
              "RP002_V1_0_1",
              "RP002_V1_0_2",
              "RP002_V1_0_3",
              "RP002_V1_0_4"
            ],
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ContactInfoRegistry

DEPRECATED: Validate contact information of registered entities.

Expand Collapse

patch

/contact_info/validation

Validate confirms a contact info validation.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "contact_info": {
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "entity": {
    "description": "EntityIdentifiers contains one of the possible entity identifiers.",
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "client_ids": {
        "properties": {
          "client_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "device_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "gateway_ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "gateway_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "type": "string"
  },
  "token": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/contact_info/validation

Request validation for the non-validated contact info for the given entity.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "application_ids": {
    "properties": {
      "application_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "client_ids": {
    "properties": {
      "client_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "device_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "gateway_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "organization_ids": {
    "properties": {
      "organization_id": {
        "description": "This ID shares namespace with user IDs.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "user_ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      },
      "user_id": {
        "description": "This ID shares namespace with organization IDs.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "contact_info": {
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "entity": {
    "description": "EntityIdentifiers contains one of the possible entity identifiers.",
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "client_ids": {
        "properties": {
          "client_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "device_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "gateway_ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "gateway_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "type": "string"
  },
  "token": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EndDeviceClaimingServer

Claim and manage end devices on external Join Servers.

Expand Collapse

post

/edcs/applications/{application_ids.application_id}/authorize

Authorize the End Device Claiming Server to claim devices registered in the given application.

Expand Collapse

The application identifiers are the source application, where the devices are registered before they are claimed. The API key is used to access the application, find the device, verify the claim request and delete the end device from the source application. DEPRECATED: Device claiming that transfers devices between applications is no longer supported and will be removed in a future version of The Things Stack.

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "api_key": {
    "type": "string"
  },
  "application_ids": {
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/edcs/applications/{application_id}/authorize

Unauthorize the End Device Claiming Server to claim devices in the given application.

Expand Collapse

This reverts the authorization given with rpc AuthorizeApplication. DEPRECATED: Device claiming that transfers devices between applications is no longer supported and will be removed in a future version of The Things Stack.

Request Parameters
Field Type Required Description
application_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/edcs/claim

Claims the end device on a Join Server by claim authentication code or QR code.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "authenticated_identifiers": {
    "properties": {
      "authentication_code": {
        "description": "Authentication code to prove ownership.\nIn the LoRa Alliance TR005 specification, this equals the OwnerToken.",
        "type": "string"
      },
      "dev_eui": {
        "description": "DevEUI of the device to claim.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "JoinEUI (or AppEUI) of the device to claim.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "qr_code": {
    "description": "Raw QR code contents.",
    "format": "byte",
    "type": "string"
  },
  "target_application_ids": {
    "properties": {
      "application_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "target_device_id": {
    "description": "End device ID of the target end device. If empty, use the source device ID.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "application_ids": {
    "properties": {
      "application_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "dev_addr": {
    "description": "The LoRaWAN DevAddr.",
    "example": "2600ABCD",
    "format": "string",
    "type": "string"
  },
  "dev_eui": {
    "description": "The LoRaWAN DevEUI.",
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  },
  "device_id": {
    "type": "string"
  },
  "join_eui": {
    "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/edcs/claim/info

Return whether claiming is available for a given JoinEUI.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "join_eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "join_eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  },
  "supports_claiming": {
    "description": "If set, this Join EUI is available for claiming on one of the configured Join Servers.",
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/edcs/claim/{application_ids.application_id}/devices/{device_id}

Unclaims the end device on a Join Server.

Expand Collapse

EUIs provided in the request are ignored and the end device is looked up by the given identifiers.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_id string true
dev_eui string The LoRaWAN DevEUI.
join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/edcs/claim/{application_ids.application_id}/devices/{device_id}

Gets the claim status of an end device.

Expand Collapse

EUIs provided in the request are ignored and the end device is looked up by the given identifiers.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_id string true
dev_eui string The LoRaWAN DevEUI.
join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "home_net_id": {
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "home_ns_id": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  },
  "vendor_specific": {
    "properties": {
      "data": {
        "description": "Vendor Specific data in JSON format.",
        "type": "object"
      },
      "organization_unique_identifier": {
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EndDeviceBatchClaimingServer

Claim and manage batches of end devices on external Join Servers.

Expand Collapse

post

/edcs/claim/info/batch

Return whether claiming is supported for each Join EUI in a given list.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "requests": {
    "items": {
      "properties": {
        "join_eui": {
          "example": "70B3D57ED000ABCD",
          "format": "string",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "infos": {
    "items": {
      "properties": {
        "join_eui": {
          "example": "70B3D57ED000ABCD",
          "format": "string",
          "type": "string"
        },
        "supports_claiming": {
          "description": "If set, this Join EUI is available for claiming on one of the configured Join Servers.",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/edcs/claim/{application_ids.application_id}/devices/batch

Unclaims multiple end devices on an external Join Server.

Expand Collapse

All devices must have the same application ID. Check the response for devices that could not be unclaimed.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_ids array
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "application_ids": {
    "properties": {
      "application_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "failed": {
    "additionalProperties": {
      "$ref": "#/definitions/v3ErrorDetails"
    },
    "description": "End devices that could not be unclaimed.\nThe key is the device ID.",
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

GatewayClaimingServer

Claim gateways and manage claims.

Expand Collapse

post

/gcls/claim

Claims a gateway by claim authentication code or QR code and transfers the gateway to the target user.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "authenticated_identifiers": {
    "properties": {
      "authentication_code": {
        "format": "byte",
        "type": "string"
      },
      "gateway_eui": {
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "cups_redirection": {
    "description": "DEPRECATED: This message is deprecated and will be removed in a future version of The Things Stack.",
    "properties": {
      "auth_token": {
        "description": "The Device Claiming Server will fill this field with a The Things Stack API Key.",
        "type": "string"
      },
      "client_tls": {
        "properties": {
          "cert": {
            "description": "PEM encoded Client Certificate.",
            "format": "byte",
            "type": "string"
          },
          "key": {
            "description": "PEM encoded Client Private Key.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "current_gateway_key": {
        "description": "The key set in the gateway to authenticate itself.",
        "type": "string"
      },
      "target_cups_trust": {
        "description": "Optional PEM encoded CA Root certificate. If this field is empty, DCS will attempt to dial the Target CUPS server and fetch the CA.",
        "format": "byte",
        "type": "string"
      },
      "target_cups_uri": {
        "description": "CUPS URI for LoRa Basics Station CUPS redirection.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "qr_code": {
    "format": "byte",
    "type": "string"
  },
  "target_frequency_plan_id": {
    "description": "Frequency plan ID of the target gateway.\nTODO: Remove this field (https://github.com/TheThingsIndustries/lorawan-stack/issues/4024)\nDEPRECATED: Use target_frequency_plan_ids instead.",
    "type": "string"
  },
  "target_frequency_plan_ids": {
    "description": "Frequency plan IDs of the target gateway.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "target_gateway_id": {
    "description": "Gateway ID for the target gateway. This must be a unique value.\nIf this is not set, the target ID for the target gateway will be set to `\u003cgateway-eui\u003e`.",
    "type": "string"
  },
  "target_gateway_server_address": {
    "description": "Target Gateway Server Address for the target gateway.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "eui": {
    "description": "Secondary identifier, which can only be used in specific requests.",
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  },
  "gateway_id": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gcls/claim/info

Return whether claiming is available for a given gateway EUI.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  },
  "is_managed": {
    "description": "Indicates whether the gateway is a managed gateway.\nIf true, when the gateway is successfully claimed, it can be managed with ManagedGatewayConfigurationService.",
    "type": "boolean"
  },
  "supports_claiming": {
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gcls/claim/{gateway_id}

Unclaims the gateway.

Expand Collapse

EUI provided in the request are ignored and the end device is looked up by the gateway ID.

Request Parameters
Field Type Required Description
gateway_id string true
eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gcls/gateways/{gateway_ids.gateway_id}/authorize

AuthorizeGateway allows a gateway to be claimed.

Expand Collapse

DEPRECATED: Authorizing gateways for claiming is no longer supported and will be removed in a future version of The Things Stack.

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "api_key": {
    "type": "string"
  },
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gcls/gateways/{gateway_id}/authorize

UnauthorizeGateway prevents a gateway from being claimed.

Expand Collapse

DEPRECATED: Unauthorizing (locking) gateways for claiming is no longer supported and will be removed in a future version of The Things Stack.

Request Parameters
Field Type Required Description
gateway_id string true
eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

DeviceRepository

Get information on LoRaWAN end device brands, models, and templates from the Device Repository.

Expand Collapse

get

/dr/applications/{application_ids.application_id}/brands

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order_by string Order (for pagination)
search string Search for brands matching a query string.
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "brands": {
    "items": {
      "properties": {
        "brand_id": {
          "description": "Brand identifier, as specified in the Device Repository.",
          "type": "string"
        },
        "email": {
          "description": "Contact email address.",
          "type": "string"
        },
        "logo": {
          "description": "Path to brand logo.",
          "type": "string"
        },
        "lora_alliance_vendor_id": {
          "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "description": "Brand name.",
          "type": "string"
        },
        "organization_unique_identifiers": {
          "description": "Organization Unique Identifiers (OUI) assigned by IEEE.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "private_enterprise_number": {
          "description": "Private Enterprise Number (PEN) assigned by IANA.",
          "format": "int64",
          "type": "integer"
        },
        "website": {
          "description": "Brand website URL.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/applications/{application_ids.application_id}/brands/{brand_id}

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
brand_id string true Brand identifier, as defined in the Device Repository.
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "brand_id": {
    "description": "Brand identifier, as specified in the Device Repository.",
    "type": "string"
  },
  "email": {
    "description": "Contact email address.",
    "type": "string"
  },
  "logo": {
    "description": "Path to brand logo.",
    "type": "string"
  },
  "lora_alliance_vendor_id": {
    "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
    "format": "int64",
    "type": "integer"
  },
  "name": {
    "description": "Brand name.",
    "type": "string"
  },
  "organization_unique_identifiers": {
    "description": "Organization Unique Identifiers (OUI) assigned by IEEE.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "private_enterprise_number": {
    "description": "Private Enterprise Number (PEN) assigned by IANA.",
    "format": "int64",
    "type": "integer"
  },
  "website": {
    "description": "Brand website URL.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/applications/{application_ids.application_id}/brands/{brand_id}/models

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
brand_id string true List end devices from a specific brand.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order_by string Order end devices
search string List end devices matching a query string.
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "models": {
    "items": {
      "properties": {
        "additional_radios": {
          "description": "List of any additional radios included in the device.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "battery": {
          "properties": {
            "replaceable": {
              "description": "Whether the device battery can be replaced.",
              "type": "boolean"
            },
            "type": {
              "description": "Battery type.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "brand_id": {
          "description": "Brand identifier, as defined in the Device Repository.",
          "type": "string"
        },
        "compliances": {
          "properties": {
            "radio_equipment": {
              "description": "List of radio equipment standards the device is compliant with.",
              "items": {
                "properties": {
                  "body": {
                    "type": "string"
                  },
                  "norm": {
                    "type": "string"
                  },
                  "standard": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "safety": {
              "description": "List of safety standards the device is compliant with.",
              "items": {
                "properties": {
                  "body": {
                    "type": "string"
                  },
                  "norm": {
                    "type": "string"
                  },
                  "standard": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "datasheet_url": {
          "description": "Device datasheet URL.",
          "type": "string"
        },
        "description": {
          "description": "Model description.",
          "type": "string"
        },
        "dimensions": {
          "properties": {
            "diameter": {
              "description": "Device diameter (mm).",
              "format": "float",
              "type": "number"
            },
            "height": {
              "description": "Device height (mm).",
              "format": "float",
              "type": "number"
            },
            "length": {
              "description": "Device length (mm).",
              "format": "float",
              "type": "number"
            },
            "width": {
              "description": "Device width (mm).",
              "format": "float",
              "type": "number"
            }
          },
          "type": "object"
        },
        "firmware_versions": {
          "description": "Available firmware versions.",
          "items": {
            "properties": {
              "numeric": {
                "description": "Numeric firmware revision number.",
                "format": "int64",
                "type": "integer"
              },
              "profiles": {
                "additionalProperties": {
                  "properties": {
                    "codec_id": {
                      "description": "Payload formatter codec identifier, as defined in the Device Repository.",
                      "type": "string"
                    },
                    "lorawan_certified": {
                      "description": "Whether the device is LoRaWAN certified.",
                      "type": "boolean"
                    },
                    "profile_id": {
                      "description": "Profile identifier, as defined in the Device Repository.",
                      "type": "string"
                    },
                    "vendor_id": {
                      "description": "Vendor ID of the profile, as defined in the Device Repository.\nIf this value is set, the profile is loaded from this vendor's folder.\nIf this value is not set, the profile is loaded from the current (end device's) vendor.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "Device profiles for each supported region (band).",
                "type": "object"
              },
              "supported_hardware_versions": {
                "description": "Hardware versions supported by this firmware version.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "version": {
                "description": "Firmware version string.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "hardware_versions": {
          "description": "Available hardware versions.",
          "items": {
            "properties": {
              "numeric": {
                "description": "Numberic hardware revision number.",
                "format": "int64",
                "type": "integer"
              },
              "part_number": {
                "description": "Hardware part number.",
                "type": "string"
              },
              "version": {
                "description": "Hardware version string.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "ip_code": {
          "description": "Device IP rating code.",
          "type": "string"
        },
        "key_provisioning": {
          "description": "Supported key provisioning methods.",
          "items": {
            "default": "KEY_PROVISIONING_UNKNOWN",
            "description": " - KEY_PROVISIONING_UNKNOWN: Unknown Key Provisioning.\n - KEY_PROVISIONING_CUSTOM: Custom Key Provisioning.\n - KEY_PROVISIONING_JOIN_SERVER: Key Provisioning from the Global Join Server.\n - KEY_PROVISIONING_MANIFEST: Key Provisioning from Manifest.",
            "enum": [
              "KEY_PROVISIONING_UNKNOWN",
              "KEY_PROVISIONING_CUSTOM",
              "KEY_PROVISIONING_JOIN_SERVER",
              "KEY_PROVISIONING_MANIFEST"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "key_security": {
          "default": "KEY_SECURITY_UNKNOWN",
          "description": " - KEY_SECURITY_UNKNOWN: Unknown key security.\n - KEY_SECURITY_NONE: No key security.\n - KEY_SECURITY_READ_PROTECTED: Read Protected key security.\n - KEY_SECURITY_SECURE_ELEMENT: Key security using the Security Element.",
          "enum": [
            "KEY_SECURITY_UNKNOWN",
            "KEY_SECURITY_NONE",
            "KEY_SECURITY_READ_PROTECTED",
            "KEY_SECURITY_SECURE_ELEMENT"
          ],
          "type": "string"
        },
        "model_id": {
          "description": "Model identifier, as defined in the Device Repository.",
          "type": "string"
        },
        "name": {
          "description": "Model name, as defined in the Device Repository.",
          "type": "string"
        },
        "operating_conditions": {
          "properties": {
            "relative_humidity": {
              "properties": {
                "max": {
                  "description": "Max value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                },
                "min": {
                  "description": "Min value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                }
              },
              "type": "object"
            },
            "temperature": {
              "properties": {
                "max": {
                  "description": "Max value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                },
                "min": {
                  "description": "Min value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "photos": {
          "properties": {
            "main": {
              "description": "Main device photo.",
              "type": "string"
            },
            "other": {
              "description": "List of other device photos.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "product_url": {
          "description": "Device information page URL.",
          "type": "string"
        },
        "resellers": {
          "description": "Reseller URLs.",
          "items": {
            "properties": {
              "name": {
                "description": "Reseller name.",
                "type": "string"
              },
              "region": {
                "description": "Reseller regions.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "url": {
                "description": "Reseller URL.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "sensors": {
          "description": "List of sensors included in the device.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "videos": {
          "properties": {
            "main": {
              "description": "Link to main device video.",
              "type": "string"
            },
            "other": {
              "description": "Links to other device videos.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "weight": {
          "description": "Device weight (gram).",
          "format": "float",
          "type": "number"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/applications/{application_ids.application_id}/brands/{brand_id}/models/{model_id}

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
brand_id string true Brand identifier, as defined in the Device Repository.
model_id string true Model identifier, as defined in the Device Repository.
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "additional_radios": {
    "description": "List of any additional radios included in the device.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "battery": {
    "properties": {
      "replaceable": {
        "description": "Whether the device battery can be replaced.",
        "type": "boolean"
      },
      "type": {
        "description": "Battery type.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "brand_id": {
    "description": "Brand identifier, as defined in the Device Repository.",
    "type": "string"
  },
  "compliances": {
    "properties": {
      "radio_equipment": {
        "description": "List of radio equipment standards the device is compliant with.",
        "items": {
          "properties": {
            "body": {
              "type": "string"
            },
            "norm": {
              "type": "string"
            },
            "standard": {
              "type": "string"
            },
            "version": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "safety": {
        "description": "List of safety standards the device is compliant with.",
        "items": {
          "properties": {
            "body": {
              "type": "string"
            },
            "norm": {
              "type": "string"
            },
            "standard": {
              "type": "string"
            },
            "version": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "datasheet_url": {
    "description": "Device datasheet URL.",
    "type": "string"
  },
  "description": {
    "description": "Model description.",
    "type": "string"
  },
  "dimensions": {
    "properties": {
      "diameter": {
        "description": "Device diameter (mm).",
        "format": "float",
        "type": "number"
      },
      "height": {
        "description": "Device height (mm).",
        "format": "float",
        "type": "number"
      },
      "length": {
        "description": "Device length (mm).",
        "format": "float",
        "type": "number"
      },
      "width": {
        "description": "Device width (mm).",
        "format": "float",
        "type": "number"
      }
    },
    "type": "object"
  },
  "firmware_versions": {
    "description": "Available firmware versions.",
    "items": {
      "properties": {
        "numeric": {
          "description": "Numeric firmware revision number.",
          "format": "int64",
          "type": "integer"
        },
        "profiles": {
          "additionalProperties": {
            "properties": {
              "codec_id": {
                "description": "Payload formatter codec identifier, as defined in the Device Repository.",
                "type": "string"
              },
              "lorawan_certified": {
                "description": "Whether the device is LoRaWAN certified.",
                "type": "boolean"
              },
              "profile_id": {
                "description": "Profile identifier, as defined in the Device Repository.",
                "type": "string"
              },
              "vendor_id": {
                "description": "Vendor ID of the profile, as defined in the Device Repository.\nIf this value is set, the profile is loaded from this vendor's folder.\nIf this value is not set, the profile is loaded from the current (end device's) vendor.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "Device profiles for each supported region (band).",
          "type": "object"
        },
        "supported_hardware_versions": {
          "description": "Hardware versions supported by this firmware version.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "version": {
          "description": "Firmware version string.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "hardware_versions": {
    "description": "Available hardware versions.",
    "items": {
      "properties": {
        "numeric": {
          "description": "Numberic hardware revision number.",
          "format": "int64",
          "type": "integer"
        },
        "part_number": {
          "description": "Hardware part number.",
          "type": "string"
        },
        "version": {
          "description": "Hardware version string.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "ip_code": {
    "description": "Device IP rating code.",
    "type": "string"
  },
  "key_provisioning": {
    "description": "Supported key provisioning methods.",
    "items": {
      "default": "KEY_PROVISIONING_UNKNOWN",
      "description": " - KEY_PROVISIONING_UNKNOWN: Unknown Key Provisioning.\n - KEY_PROVISIONING_CUSTOM: Custom Key Provisioning.\n - KEY_PROVISIONING_JOIN_SERVER: Key Provisioning from the Global Join Server.\n - KEY_PROVISIONING_MANIFEST: Key Provisioning from Manifest.",
      "enum": [
        "KEY_PROVISIONING_UNKNOWN",
        "KEY_PROVISIONING_CUSTOM",
        "KEY_PROVISIONING_JOIN_SERVER",
        "KEY_PROVISIONING_MANIFEST"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "key_security": {
    "default": "KEY_SECURITY_UNKNOWN",
    "description": " - KEY_SECURITY_UNKNOWN: Unknown key security.\n - KEY_SECURITY_NONE: No key security.\n - KEY_SECURITY_READ_PROTECTED: Read Protected key security.\n - KEY_SECURITY_SECURE_ELEMENT: Key security using the Security Element.",
    "enum": [
      "KEY_SECURITY_UNKNOWN",
      "KEY_SECURITY_NONE",
      "KEY_SECURITY_READ_PROTECTED",
      "KEY_SECURITY_SECURE_ELEMENT"
    ],
    "type": "string"
  },
  "model_id": {
    "description": "Model identifier, as defined in the Device Repository.",
    "type": "string"
  },
  "name": {
    "description": "Model name, as defined in the Device Repository.",
    "type": "string"
  },
  "operating_conditions": {
    "properties": {
      "relative_humidity": {
        "properties": {
          "max": {
            "description": "Max value of operating conditions range.",
            "format": "float",
            "type": "number"
          },
          "min": {
            "description": "Min value of operating conditions range.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "temperature": {
        "properties": {
          "max": {
            "description": "Max value of operating conditions range.",
            "format": "float",
            "type": "number"
          },
          "min": {
            "description": "Min value of operating conditions range.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "photos": {
    "properties": {
      "main": {
        "description": "Main device photo.",
        "type": "string"
      },
      "other": {
        "description": "List of other device photos.",
        "items": {
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "product_url": {
    "description": "Device information page URL.",
    "type": "string"
  },
  "resellers": {
    "description": "Reseller URLs.",
    "items": {
      "properties": {
        "name": {
          "description": "Reseller name.",
          "type": "string"
        },
        "region": {
          "description": "Reseller regions.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "url": {
          "description": "Reseller URL.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "sensors": {
    "description": "List of sensors included in the device.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "videos": {
    "properties": {
      "main": {
        "description": "Link to main device video.",
        "type": "string"
      },
      "other": {
        "description": "Links to other device videos.",
        "items": {
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "weight": {
    "description": "Device weight (gram).",
    "format": "float",
    "type": "number"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
version_ids.brand_id string true
version_ids.model_id string true
version_ids.firmware_version string true
version_ids.band_id string true
version_ids.hardware_version string
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "codec_id": {
    "type": "string"
  },
  "examples": {
    "items": {
      "properties": {
        "description": {
          "type": "string"
        },
        "input": {
          "properties": {
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "format": "byte",
              "type": "string"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "output": {
          "properties": {
            "data": {
              "type": "object"
            },
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "formatter": {
    "default": "FORMATTER_NONE",
    "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
    "enum": [
      "FORMATTER_NONE",
      "FORMATTER_REPOSITORY",
      "FORMATTER_GRPC_SERVICE",
      "FORMATTER_JAVASCRIPT",
      "FORMATTER_CAYENNELPP"
    ],
    "type": "string"
  },
  "formatter_parameter": {
    "description": "Parameter for the formatter, must be set together.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
version_ids.brand_id string true
version_ids.model_id string true
version_ids.firmware_version string true
version_ids.band_id string true
version_ids.hardware_version string
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "codec_id": {
    "type": "string"
  },
  "examples": {
    "items": {
      "properties": {
        "description": {
          "type": "string"
        },
        "input": {
          "properties": {
            "data": {
              "type": "object"
            },
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "output": {
          "properties": {
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "format": "byte",
              "type": "string"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "formatter": {
    "default": "FORMATTER_NONE",
    "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
    "enum": [
      "FORMATTER_NONE",
      "FORMATTER_REPOSITORY",
      "FORMATTER_GRPC_SERVICE",
      "FORMATTER_JAVASCRIPT",
      "FORMATTER_CAYENNELPP"
    ],
    "type": "string"
  },
  "formatter_parameter": {
    "description": "Parameter for the formatter, must be set together.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/uplink/decoder

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
version_ids.brand_id string true
version_ids.model_id string true
version_ids.firmware_version string true
version_ids.band_id string true
version_ids.hardware_version string
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "codec_id": {
    "type": "string"
  },
  "examples": {
    "items": {
      "properties": {
        "description": {
          "type": "string"
        },
        "input": {
          "properties": {
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "format": "byte",
              "type": "string"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "output": {
          "properties": {
            "data": {
              "type": "object"
            },
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "formatter": {
    "default": "FORMATTER_NONE",
    "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
    "enum": [
      "FORMATTER_NONE",
      "FORMATTER_REPOSITORY",
      "FORMATTER_GRPC_SERVICE",
      "FORMATTER_JAVASCRIPT",
      "FORMATTER_CAYENNELPP"
    ],
    "type": "string"
  },
  "formatter_parameter": {
    "description": "Parameter for the formatter, must be set together.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/applications/{application_ids.application_id}/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/template

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
version_ids.brand_id string true
version_ids.model_id string true
version_ids.firmware_version string true
version_ids.band_id string true
version_ids.hardware_version string
end_device_profile_ids.vendor_id integer VendorID managed by the LoRa Alliance, as defined in TR005.
end_device_profile_ids.vendor_profile_id integer ID of the LoRaWAN end device profile assigned by the vendor.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "mapping_key": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/applications/{application_ids.application_id}/models

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
brand_id string List end devices from a specific brand.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order_by string Order end devices
search string List end devices matching a query string.
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "models": {
    "items": {
      "properties": {
        "additional_radios": {
          "description": "List of any additional radios included in the device.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "battery": {
          "properties": {
            "replaceable": {
              "description": "Whether the device battery can be replaced.",
              "type": "boolean"
            },
            "type": {
              "description": "Battery type.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "brand_id": {
          "description": "Brand identifier, as defined in the Device Repository.",
          "type": "string"
        },
        "compliances": {
          "properties": {
            "radio_equipment": {
              "description": "List of radio equipment standards the device is compliant with.",
              "items": {
                "properties": {
                  "body": {
                    "type": "string"
                  },
                  "norm": {
                    "type": "string"
                  },
                  "standard": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "safety": {
              "description": "List of safety standards the device is compliant with.",
              "items": {
                "properties": {
                  "body": {
                    "type": "string"
                  },
                  "norm": {
                    "type": "string"
                  },
                  "standard": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "datasheet_url": {
          "description": "Device datasheet URL.",
          "type": "string"
        },
        "description": {
          "description": "Model description.",
          "type": "string"
        },
        "dimensions": {
          "properties": {
            "diameter": {
              "description": "Device diameter (mm).",
              "format": "float",
              "type": "number"
            },
            "height": {
              "description": "Device height (mm).",
              "format": "float",
              "type": "number"
            },
            "length": {
              "description": "Device length (mm).",
              "format": "float",
              "type": "number"
            },
            "width": {
              "description": "Device width (mm).",
              "format": "float",
              "type": "number"
            }
          },
          "type": "object"
        },
        "firmware_versions": {
          "description": "Available firmware versions.",
          "items": {
            "properties": {
              "numeric": {
                "description": "Numeric firmware revision number.",
                "format": "int64",
                "type": "integer"
              },
              "profiles": {
                "additionalProperties": {
                  "properties": {
                    "codec_id": {
                      "description": "Payload formatter codec identifier, as defined in the Device Repository.",
                      "type": "string"
                    },
                    "lorawan_certified": {
                      "description": "Whether the device is LoRaWAN certified.",
                      "type": "boolean"
                    },
                    "profile_id": {
                      "description": "Profile identifier, as defined in the Device Repository.",
                      "type": "string"
                    },
                    "vendor_id": {
                      "description": "Vendor ID of the profile, as defined in the Device Repository.\nIf this value is set, the profile is loaded from this vendor's folder.\nIf this value is not set, the profile is loaded from the current (end device's) vendor.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "Device profiles for each supported region (band).",
                "type": "object"
              },
              "supported_hardware_versions": {
                "description": "Hardware versions supported by this firmware version.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "version": {
                "description": "Firmware version string.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "hardware_versions": {
          "description": "Available hardware versions.",
          "items": {
            "properties": {
              "numeric": {
                "description": "Numberic hardware revision number.",
                "format": "int64",
                "type": "integer"
              },
              "part_number": {
                "description": "Hardware part number.",
                "type": "string"
              },
              "version": {
                "description": "Hardware version string.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "ip_code": {
          "description": "Device IP rating code.",
          "type": "string"
        },
        "key_provisioning": {
          "description": "Supported key provisioning methods.",
          "items": {
            "default": "KEY_PROVISIONING_UNKNOWN",
            "description": " - KEY_PROVISIONING_UNKNOWN: Unknown Key Provisioning.\n - KEY_PROVISIONING_CUSTOM: Custom Key Provisioning.\n - KEY_PROVISIONING_JOIN_SERVER: Key Provisioning from the Global Join Server.\n - KEY_PROVISIONING_MANIFEST: Key Provisioning from Manifest.",
            "enum": [
              "KEY_PROVISIONING_UNKNOWN",
              "KEY_PROVISIONING_CUSTOM",
              "KEY_PROVISIONING_JOIN_SERVER",
              "KEY_PROVISIONING_MANIFEST"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "key_security": {
          "default": "KEY_SECURITY_UNKNOWN",
          "description": " - KEY_SECURITY_UNKNOWN: Unknown key security.\n - KEY_SECURITY_NONE: No key security.\n - KEY_SECURITY_READ_PROTECTED: Read Protected key security.\n - KEY_SECURITY_SECURE_ELEMENT: Key security using the Security Element.",
          "enum": [
            "KEY_SECURITY_UNKNOWN",
            "KEY_SECURITY_NONE",
            "KEY_SECURITY_READ_PROTECTED",
            "KEY_SECURITY_SECURE_ELEMENT"
          ],
          "type": "string"
        },
        "model_id": {
          "description": "Model identifier, as defined in the Device Repository.",
          "type": "string"
        },
        "name": {
          "description": "Model name, as defined in the Device Repository.",
          "type": "string"
        },
        "operating_conditions": {
          "properties": {
            "relative_humidity": {
              "properties": {
                "max": {
                  "description": "Max value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                },
                "min": {
                  "description": "Min value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                }
              },
              "type": "object"
            },
            "temperature": {
              "properties": {
                "max": {
                  "description": "Max value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                },
                "min": {
                  "description": "Min value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "photos": {
          "properties": {
            "main": {
              "description": "Main device photo.",
              "type": "string"
            },
            "other": {
              "description": "List of other device photos.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "product_url": {
          "description": "Device information page URL.",
          "type": "string"
        },
        "resellers": {
          "description": "Reseller URLs.",
          "items": {
            "properties": {
              "name": {
                "description": "Reseller name.",
                "type": "string"
              },
              "region": {
                "description": "Reseller regions.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "url": {
                "description": "Reseller URL.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "sensors": {
          "description": "List of sensors included in the device.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "videos": {
          "properties": {
            "main": {
              "description": "Link to main device video.",
              "type": "string"
            },
            "other": {
              "description": "Links to other device videos.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "weight": {
          "description": "Device weight (gram).",
          "format": "float",
          "type": "number"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/applications/{application_ids.application_id}/vendors/{end_device_profile_ids.vendor_id}/profiles/{end_device_profile_ids.vendor_profile_id}/template

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
end_device_profile_ids.vendor_id integer true VendorID managed by the LoRa Alliance, as defined in TR005.
end_device_profile_ids.vendor_profile_id integer true ID of the LoRaWAN end device profile assigned by the vendor.
version_ids.brand_id string
version_ids.model_id string
version_ids.hardware_version string
version_ids.firmware_version string
version_ids.band_id string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "mapping_key": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/brands

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order_by string Order (for pagination)
search string Search for brands matching a query string.
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "brands": {
    "items": {
      "properties": {
        "brand_id": {
          "description": "Brand identifier, as specified in the Device Repository.",
          "type": "string"
        },
        "email": {
          "description": "Contact email address.",
          "type": "string"
        },
        "logo": {
          "description": "Path to brand logo.",
          "type": "string"
        },
        "lora_alliance_vendor_id": {
          "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "description": "Brand name.",
          "type": "string"
        },
        "organization_unique_identifiers": {
          "description": "Organization Unique Identifiers (OUI) assigned by IEEE.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "private_enterprise_number": {
          "description": "Private Enterprise Number (PEN) assigned by IANA.",
          "format": "int64",
          "type": "integer"
        },
        "website": {
          "description": "Brand website URL.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/brands/{brand_id}

Expand Collapse

Request Parameters
Field Type Required Description
brand_id string true Brand identifier, as defined in the Device Repository.
application_ids.application_id string
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "brand_id": {
    "description": "Brand identifier, as specified in the Device Repository.",
    "type": "string"
  },
  "email": {
    "description": "Contact email address.",
    "type": "string"
  },
  "logo": {
    "description": "Path to brand logo.",
    "type": "string"
  },
  "lora_alliance_vendor_id": {
    "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
    "format": "int64",
    "type": "integer"
  },
  "name": {
    "description": "Brand name.",
    "type": "string"
  },
  "organization_unique_identifiers": {
    "description": "Organization Unique Identifiers (OUI) assigned by IEEE.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "private_enterprise_number": {
    "description": "Private Enterprise Number (PEN) assigned by IANA.",
    "format": "int64",
    "type": "integer"
  },
  "website": {
    "description": "Brand website URL.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/brands/{brand_id}/models

Expand Collapse

Request Parameters
Field Type Required Description
brand_id string true List end devices from a specific brand.
application_ids.application_id string
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order_by string Order end devices
search string List end devices matching a query string.
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "models": {
    "items": {
      "properties": {
        "additional_radios": {
          "description": "List of any additional radios included in the device.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "battery": {
          "properties": {
            "replaceable": {
              "description": "Whether the device battery can be replaced.",
              "type": "boolean"
            },
            "type": {
              "description": "Battery type.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "brand_id": {
          "description": "Brand identifier, as defined in the Device Repository.",
          "type": "string"
        },
        "compliances": {
          "properties": {
            "radio_equipment": {
              "description": "List of radio equipment standards the device is compliant with.",
              "items": {
                "properties": {
                  "body": {
                    "type": "string"
                  },
                  "norm": {
                    "type": "string"
                  },
                  "standard": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "safety": {
              "description": "List of safety standards the device is compliant with.",
              "items": {
                "properties": {
                  "body": {
                    "type": "string"
                  },
                  "norm": {
                    "type": "string"
                  },
                  "standard": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "datasheet_url": {
          "description": "Device datasheet URL.",
          "type": "string"
        },
        "description": {
          "description": "Model description.",
          "type": "string"
        },
        "dimensions": {
          "properties": {
            "diameter": {
              "description": "Device diameter (mm).",
              "format": "float",
              "type": "number"
            },
            "height": {
              "description": "Device height (mm).",
              "format": "float",
              "type": "number"
            },
            "length": {
              "description": "Device length (mm).",
              "format": "float",
              "type": "number"
            },
            "width": {
              "description": "Device width (mm).",
              "format": "float",
              "type": "number"
            }
          },
          "type": "object"
        },
        "firmware_versions": {
          "description": "Available firmware versions.",
          "items": {
            "properties": {
              "numeric": {
                "description": "Numeric firmware revision number.",
                "format": "int64",
                "type": "integer"
              },
              "profiles": {
                "additionalProperties": {
                  "properties": {
                    "codec_id": {
                      "description": "Payload formatter codec identifier, as defined in the Device Repository.",
                      "type": "string"
                    },
                    "lorawan_certified": {
                      "description": "Whether the device is LoRaWAN certified.",
                      "type": "boolean"
                    },
                    "profile_id": {
                      "description": "Profile identifier, as defined in the Device Repository.",
                      "type": "string"
                    },
                    "vendor_id": {
                      "description": "Vendor ID of the profile, as defined in the Device Repository.\nIf this value is set, the profile is loaded from this vendor's folder.\nIf this value is not set, the profile is loaded from the current (end device's) vendor.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "Device profiles for each supported region (band).",
                "type": "object"
              },
              "supported_hardware_versions": {
                "description": "Hardware versions supported by this firmware version.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "version": {
                "description": "Firmware version string.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "hardware_versions": {
          "description": "Available hardware versions.",
          "items": {
            "properties": {
              "numeric": {
                "description": "Numberic hardware revision number.",
                "format": "int64",
                "type": "integer"
              },
              "part_number": {
                "description": "Hardware part number.",
                "type": "string"
              },
              "version": {
                "description": "Hardware version string.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "ip_code": {
          "description": "Device IP rating code.",
          "type": "string"
        },
        "key_provisioning": {
          "description": "Supported key provisioning methods.",
          "items": {
            "default": "KEY_PROVISIONING_UNKNOWN",
            "description": " - KEY_PROVISIONING_UNKNOWN: Unknown Key Provisioning.\n - KEY_PROVISIONING_CUSTOM: Custom Key Provisioning.\n - KEY_PROVISIONING_JOIN_SERVER: Key Provisioning from the Global Join Server.\n - KEY_PROVISIONING_MANIFEST: Key Provisioning from Manifest.",
            "enum": [
              "KEY_PROVISIONING_UNKNOWN",
              "KEY_PROVISIONING_CUSTOM",
              "KEY_PROVISIONING_JOIN_SERVER",
              "KEY_PROVISIONING_MANIFEST"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "key_security": {
          "default": "KEY_SECURITY_UNKNOWN",
          "description": " - KEY_SECURITY_UNKNOWN: Unknown key security.\n - KEY_SECURITY_NONE: No key security.\n - KEY_SECURITY_READ_PROTECTED: Read Protected key security.\n - KEY_SECURITY_SECURE_ELEMENT: Key security using the Security Element.",
          "enum": [
            "KEY_SECURITY_UNKNOWN",
            "KEY_SECURITY_NONE",
            "KEY_SECURITY_READ_PROTECTED",
            "KEY_SECURITY_SECURE_ELEMENT"
          ],
          "type": "string"
        },
        "model_id": {
          "description": "Model identifier, as defined in the Device Repository.",
          "type": "string"
        },
        "name": {
          "description": "Model name, as defined in the Device Repository.",
          "type": "string"
        },
        "operating_conditions": {
          "properties": {
            "relative_humidity": {
              "properties": {
                "max": {
                  "description": "Max value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                },
                "min": {
                  "description": "Min value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                }
              },
              "type": "object"
            },
            "temperature": {
              "properties": {
                "max": {
                  "description": "Max value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                },
                "min": {
                  "description": "Min value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "photos": {
          "properties": {
            "main": {
              "description": "Main device photo.",
              "type": "string"
            },
            "other": {
              "description": "List of other device photos.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "product_url": {
          "description": "Device information page URL.",
          "type": "string"
        },
        "resellers": {
          "description": "Reseller URLs.",
          "items": {
            "properties": {
              "name": {
                "description": "Reseller name.",
                "type": "string"
              },
              "region": {
                "description": "Reseller regions.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "url": {
                "description": "Reseller URL.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "sensors": {
          "description": "List of sensors included in the device.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "videos": {
          "properties": {
            "main": {
              "description": "Link to main device video.",
              "type": "string"
            },
            "other": {
              "description": "Links to other device videos.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "weight": {
          "description": "Device weight (gram).",
          "format": "float",
          "type": "number"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/brands/{brand_id}/models/{model_id}

Expand Collapse

Request Parameters
Field Type Required Description
brand_id string true Brand identifier, as defined in the Device Repository.
model_id string true Model identifier, as defined in the Device Repository.
application_ids.application_id string
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "additional_radios": {
    "description": "List of any additional radios included in the device.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "battery": {
    "properties": {
      "replaceable": {
        "description": "Whether the device battery can be replaced.",
        "type": "boolean"
      },
      "type": {
        "description": "Battery type.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "brand_id": {
    "description": "Brand identifier, as defined in the Device Repository.",
    "type": "string"
  },
  "compliances": {
    "properties": {
      "radio_equipment": {
        "description": "List of radio equipment standards the device is compliant with.",
        "items": {
          "properties": {
            "body": {
              "type": "string"
            },
            "norm": {
              "type": "string"
            },
            "standard": {
              "type": "string"
            },
            "version": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "safety": {
        "description": "List of safety standards the device is compliant with.",
        "items": {
          "properties": {
            "body": {
              "type": "string"
            },
            "norm": {
              "type": "string"
            },
            "standard": {
              "type": "string"
            },
            "version": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "datasheet_url": {
    "description": "Device datasheet URL.",
    "type": "string"
  },
  "description": {
    "description": "Model description.",
    "type": "string"
  },
  "dimensions": {
    "properties": {
      "diameter": {
        "description": "Device diameter (mm).",
        "format": "float",
        "type": "number"
      },
      "height": {
        "description": "Device height (mm).",
        "format": "float",
        "type": "number"
      },
      "length": {
        "description": "Device length (mm).",
        "format": "float",
        "type": "number"
      },
      "width": {
        "description": "Device width (mm).",
        "format": "float",
        "type": "number"
      }
    },
    "type": "object"
  },
  "firmware_versions": {
    "description": "Available firmware versions.",
    "items": {
      "properties": {
        "numeric": {
          "description": "Numeric firmware revision number.",
          "format": "int64",
          "type": "integer"
        },
        "profiles": {
          "additionalProperties": {
            "properties": {
              "codec_id": {
                "description": "Payload formatter codec identifier, as defined in the Device Repository.",
                "type": "string"
              },
              "lorawan_certified": {
                "description": "Whether the device is LoRaWAN certified.",
                "type": "boolean"
              },
              "profile_id": {
                "description": "Profile identifier, as defined in the Device Repository.",
                "type": "string"
              },
              "vendor_id": {
                "description": "Vendor ID of the profile, as defined in the Device Repository.\nIf this value is set, the profile is loaded from this vendor's folder.\nIf this value is not set, the profile is loaded from the current (end device's) vendor.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "Device profiles for each supported region (band).",
          "type": "object"
        },
        "supported_hardware_versions": {
          "description": "Hardware versions supported by this firmware version.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "version": {
          "description": "Firmware version string.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "hardware_versions": {
    "description": "Available hardware versions.",
    "items": {
      "properties": {
        "numeric": {
          "description": "Numberic hardware revision number.",
          "format": "int64",
          "type": "integer"
        },
        "part_number": {
          "description": "Hardware part number.",
          "type": "string"
        },
        "version": {
          "description": "Hardware version string.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "ip_code": {
    "description": "Device IP rating code.",
    "type": "string"
  },
  "key_provisioning": {
    "description": "Supported key provisioning methods.",
    "items": {
      "default": "KEY_PROVISIONING_UNKNOWN",
      "description": " - KEY_PROVISIONING_UNKNOWN: Unknown Key Provisioning.\n - KEY_PROVISIONING_CUSTOM: Custom Key Provisioning.\n - KEY_PROVISIONING_JOIN_SERVER: Key Provisioning from the Global Join Server.\n - KEY_PROVISIONING_MANIFEST: Key Provisioning from Manifest.",
      "enum": [
        "KEY_PROVISIONING_UNKNOWN",
        "KEY_PROVISIONING_CUSTOM",
        "KEY_PROVISIONING_JOIN_SERVER",
        "KEY_PROVISIONING_MANIFEST"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "key_security": {
    "default": "KEY_SECURITY_UNKNOWN",
    "description": " - KEY_SECURITY_UNKNOWN: Unknown key security.\n - KEY_SECURITY_NONE: No key security.\n - KEY_SECURITY_READ_PROTECTED: Read Protected key security.\n - KEY_SECURITY_SECURE_ELEMENT: Key security using the Security Element.",
    "enum": [
      "KEY_SECURITY_UNKNOWN",
      "KEY_SECURITY_NONE",
      "KEY_SECURITY_READ_PROTECTED",
      "KEY_SECURITY_SECURE_ELEMENT"
    ],
    "type": "string"
  },
  "model_id": {
    "description": "Model identifier, as defined in the Device Repository.",
    "type": "string"
  },
  "name": {
    "description": "Model name, as defined in the Device Repository.",
    "type": "string"
  },
  "operating_conditions": {
    "properties": {
      "relative_humidity": {
        "properties": {
          "max": {
            "description": "Max value of operating conditions range.",
            "format": "float",
            "type": "number"
          },
          "min": {
            "description": "Min value of operating conditions range.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "temperature": {
        "properties": {
          "max": {
            "description": "Max value of operating conditions range.",
            "format": "float",
            "type": "number"
          },
          "min": {
            "description": "Min value of operating conditions range.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "photos": {
    "properties": {
      "main": {
        "description": "Main device photo.",
        "type": "string"
      },
      "other": {
        "description": "List of other device photos.",
        "items": {
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "product_url": {
    "description": "Device information page URL.",
    "type": "string"
  },
  "resellers": {
    "description": "Reseller URLs.",
    "items": {
      "properties": {
        "name": {
          "description": "Reseller name.",
          "type": "string"
        },
        "region": {
          "description": "Reseller regions.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "url": {
          "description": "Reseller URL.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "sensors": {
    "description": "List of sensors included in the device.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "videos": {
    "properties": {
      "main": {
        "description": "Link to main device video.",
        "type": "string"
      },
      "other": {
        "description": "Links to other device videos.",
        "items": {
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "weight": {
    "description": "Device weight (gram).",
    "format": "float",
    "type": "number"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/decoder

Expand Collapse

Request Parameters
Field Type Required Description
version_ids.brand_id string true
version_ids.model_id string true
version_ids.firmware_version string true
version_ids.band_id string true
application_ids.application_id string
version_ids.hardware_version string
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "codec_id": {
    "type": "string"
  },
  "examples": {
    "items": {
      "properties": {
        "description": {
          "type": "string"
        },
        "input": {
          "properties": {
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "format": "byte",
              "type": "string"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "output": {
          "properties": {
            "data": {
              "type": "object"
            },
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "formatter": {
    "default": "FORMATTER_NONE",
    "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
    "enum": [
      "FORMATTER_NONE",
      "FORMATTER_REPOSITORY",
      "FORMATTER_GRPC_SERVICE",
      "FORMATTER_JAVASCRIPT",
      "FORMATTER_CAYENNELPP"
    ],
    "type": "string"
  },
  "formatter_parameter": {
    "description": "Parameter for the formatter, must be set together.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/downlink/encoder

Expand Collapse

Request Parameters
Field Type Required Description
version_ids.brand_id string true
version_ids.model_id string true
version_ids.firmware_version string true
version_ids.band_id string true
application_ids.application_id string
version_ids.hardware_version string
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "codec_id": {
    "type": "string"
  },
  "examples": {
    "items": {
      "properties": {
        "description": {
          "type": "string"
        },
        "input": {
          "properties": {
            "data": {
              "type": "object"
            },
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "output": {
          "properties": {
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "format": "byte",
              "type": "string"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "formatter": {
    "default": "FORMATTER_NONE",
    "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
    "enum": [
      "FORMATTER_NONE",
      "FORMATTER_REPOSITORY",
      "FORMATTER_GRPC_SERVICE",
      "FORMATTER_JAVASCRIPT",
      "FORMATTER_CAYENNELPP"
    ],
    "type": "string"
  },
  "formatter_parameter": {
    "description": "Parameter for the formatter, must be set together.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/formatters/uplink/decoder

Expand Collapse

Request Parameters
Field Type Required Description
version_ids.brand_id string true
version_ids.model_id string true
version_ids.firmware_version string true
version_ids.band_id string true
application_ids.application_id string
version_ids.hardware_version string
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "codec_id": {
    "type": "string"
  },
  "examples": {
    "items": {
      "properties": {
        "description": {
          "type": "string"
        },
        "input": {
          "properties": {
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "format": "byte",
              "type": "string"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "output": {
          "properties": {
            "data": {
              "type": "object"
            },
            "errors": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "formatter": {
    "default": "FORMATTER_NONE",
    "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
    "enum": [
      "FORMATTER_NONE",
      "FORMATTER_REPOSITORY",
      "FORMATTER_GRPC_SERVICE",
      "FORMATTER_JAVASCRIPT",
      "FORMATTER_CAYENNELPP"
    ],
    "type": "string"
  },
  "formatter_parameter": {
    "description": "Parameter for the formatter, must be set together.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/brands/{version_ids.brand_id}/models/{version_ids.model_id}/{version_ids.firmware_version}/{version_ids.band_id}/template

Expand Collapse

Request Parameters
Field Type Required Description
version_ids.brand_id string true
version_ids.model_id string true
version_ids.firmware_version string true
version_ids.band_id string true
application_ids.application_id string
version_ids.hardware_version string
end_device_profile_ids.vendor_id integer VendorID managed by the LoRa Alliance, as defined in TR005.
end_device_profile_ids.vendor_profile_id integer ID of the LoRaWAN end device profile assigned by the vendor.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "mapping_key": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/models

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string
brand_id string List end devices from a specific brand.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order_by string Order end devices
search string List end devices matching a query string.
field_mask string Field mask paths.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "models": {
    "items": {
      "properties": {
        "additional_radios": {
          "description": "List of any additional radios included in the device.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "battery": {
          "properties": {
            "replaceable": {
              "description": "Whether the device battery can be replaced.",
              "type": "boolean"
            },
            "type": {
              "description": "Battery type.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "brand_id": {
          "description": "Brand identifier, as defined in the Device Repository.",
          "type": "string"
        },
        "compliances": {
          "properties": {
            "radio_equipment": {
              "description": "List of radio equipment standards the device is compliant with.",
              "items": {
                "properties": {
                  "body": {
                    "type": "string"
                  },
                  "norm": {
                    "type": "string"
                  },
                  "standard": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "safety": {
              "description": "List of safety standards the device is compliant with.",
              "items": {
                "properties": {
                  "body": {
                    "type": "string"
                  },
                  "norm": {
                    "type": "string"
                  },
                  "standard": {
                    "type": "string"
                  },
                  "version": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "datasheet_url": {
          "description": "Device datasheet URL.",
          "type": "string"
        },
        "description": {
          "description": "Model description.",
          "type": "string"
        },
        "dimensions": {
          "properties": {
            "diameter": {
              "description": "Device diameter (mm).",
              "format": "float",
              "type": "number"
            },
            "height": {
              "description": "Device height (mm).",
              "format": "float",
              "type": "number"
            },
            "length": {
              "description": "Device length (mm).",
              "format": "float",
              "type": "number"
            },
            "width": {
              "description": "Device width (mm).",
              "format": "float",
              "type": "number"
            }
          },
          "type": "object"
        },
        "firmware_versions": {
          "description": "Available firmware versions.",
          "items": {
            "properties": {
              "numeric": {
                "description": "Numeric firmware revision number.",
                "format": "int64",
                "type": "integer"
              },
              "profiles": {
                "additionalProperties": {
                  "properties": {
                    "codec_id": {
                      "description": "Payload formatter codec identifier, as defined in the Device Repository.",
                      "type": "string"
                    },
                    "lorawan_certified": {
                      "description": "Whether the device is LoRaWAN certified.",
                      "type": "boolean"
                    },
                    "profile_id": {
                      "description": "Profile identifier, as defined in the Device Repository.",
                      "type": "string"
                    },
                    "vendor_id": {
                      "description": "Vendor ID of the profile, as defined in the Device Repository.\nIf this value is set, the profile is loaded from this vendor's folder.\nIf this value is not set, the profile is loaded from the current (end device's) vendor.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "Device profiles for each supported region (band).",
                "type": "object"
              },
              "supported_hardware_versions": {
                "description": "Hardware versions supported by this firmware version.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "version": {
                "description": "Firmware version string.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "hardware_versions": {
          "description": "Available hardware versions.",
          "items": {
            "properties": {
              "numeric": {
                "description": "Numberic hardware revision number.",
                "format": "int64",
                "type": "integer"
              },
              "part_number": {
                "description": "Hardware part number.",
                "type": "string"
              },
              "version": {
                "description": "Hardware version string.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "ip_code": {
          "description": "Device IP rating code.",
          "type": "string"
        },
        "key_provisioning": {
          "description": "Supported key provisioning methods.",
          "items": {
            "default": "KEY_PROVISIONING_UNKNOWN",
            "description": " - KEY_PROVISIONING_UNKNOWN: Unknown Key Provisioning.\n - KEY_PROVISIONING_CUSTOM: Custom Key Provisioning.\n - KEY_PROVISIONING_JOIN_SERVER: Key Provisioning from the Global Join Server.\n - KEY_PROVISIONING_MANIFEST: Key Provisioning from Manifest.",
            "enum": [
              "KEY_PROVISIONING_UNKNOWN",
              "KEY_PROVISIONING_CUSTOM",
              "KEY_PROVISIONING_JOIN_SERVER",
              "KEY_PROVISIONING_MANIFEST"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "key_security": {
          "default": "KEY_SECURITY_UNKNOWN",
          "description": " - KEY_SECURITY_UNKNOWN: Unknown key security.\n - KEY_SECURITY_NONE: No key security.\n - KEY_SECURITY_READ_PROTECTED: Read Protected key security.\n - KEY_SECURITY_SECURE_ELEMENT: Key security using the Security Element.",
          "enum": [
            "KEY_SECURITY_UNKNOWN",
            "KEY_SECURITY_NONE",
            "KEY_SECURITY_READ_PROTECTED",
            "KEY_SECURITY_SECURE_ELEMENT"
          ],
          "type": "string"
        },
        "model_id": {
          "description": "Model identifier, as defined in the Device Repository.",
          "type": "string"
        },
        "name": {
          "description": "Model name, as defined in the Device Repository.",
          "type": "string"
        },
        "operating_conditions": {
          "properties": {
            "relative_humidity": {
              "properties": {
                "max": {
                  "description": "Max value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                },
                "min": {
                  "description": "Min value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                }
              },
              "type": "object"
            },
            "temperature": {
              "properties": {
                "max": {
                  "description": "Max value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                },
                "min": {
                  "description": "Min value of operating conditions range.",
                  "format": "float",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "photos": {
          "properties": {
            "main": {
              "description": "Main device photo.",
              "type": "string"
            },
            "other": {
              "description": "List of other device photos.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "product_url": {
          "description": "Device information page URL.",
          "type": "string"
        },
        "resellers": {
          "description": "Reseller URLs.",
          "items": {
            "properties": {
              "name": {
                "description": "Reseller name.",
                "type": "string"
              },
              "region": {
                "description": "Reseller regions.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "url": {
                "description": "Reseller URL.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "sensors": {
          "description": "List of sensors included in the device.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "videos": {
          "properties": {
            "main": {
              "description": "Link to main device video.",
              "type": "string"
            },
            "other": {
              "description": "Links to other device videos.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "weight": {
          "description": "Device weight (gram).",
          "format": "float",
          "type": "number"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/dr/vendors/{end_device_profile_ids.vendor_id}/profiles/{end_device_profile_ids.vendor_profile_id}/template

Expand Collapse

Request Parameters
Field Type Required Description
end_device_profile_ids.vendor_id integer true VendorID managed by the LoRa Alliance, as defined in TR005.
end_device_profile_ids.vendor_profile_id integer true ID of the LoRaWAN end device profile assigned by the vendor.
application_ids.application_id string
version_ids.brand_id string
version_ids.model_id string
version_ids.hardware_version string
version_ids.firmware_version string
version_ids.band_id string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "mapping_key": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EmailValidationRegistry

Validate a user's primary email.

Expand Collapse

patch

/email/validation

Validate confirms a contact info validation.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "id": {
    "type": "string"
  },
  "token": {
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/email/validation

Request validation for the non-validated contact info for the given entity.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "email": {
    "description": "Secondary identifier, which can only be used in specific requests.",
    "type": "string"
  },
  "user_id": {
    "description": "This ID shares namespace with organization IDs.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "address": {
    "type": "string"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "type": "string"
  },
  "token": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EndDeviceRegistry

Manage end devices on The Things Stack Identity Server.

Expand Collapse

get

/applications/{application_ids.application_id}/devices

List end devices in the given application.

Expand Collapse

Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
application_ids.application_id string true
field_mask string The names of the end device fields that should be returned. See the API reference for which fields can be returned by the different services.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_devices": {
    "items": {
      "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
      "properties": {
        "activated_at": {
          "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
          "format": "date-time",
          "type": "string"
        },
        "application_server_address": {
          "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "application_server_id": {
          "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
          "type": "string"
        },
        "application_server_kek_label": {
          "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
          "type": "object"
        },
        "battery_percentage": {
          "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
          "format": "float",
          "type": "number"
        },
        "claim_authentication_code": {
          "description": "Authentication code for end devices.",
          "properties": {
            "valid_from": {
              "format": "date-time",
              "type": "string"
            },
            "valid_to": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "Description of the device. Stored in Entity Registry.",
          "type": "string"
        },
        "downlink_margin": {
          "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
          "format": "int32",
          "type": "integer"
        },
        "formatters": {
          "properties": {
            "down_formatter": {
              "default": "FORMATTER_NONE",
              "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
              "enum": [
                "FORMATTER_NONE",
                "FORMATTER_REPOSITORY",
                "FORMATTER_GRPC_SERVICE",
                "FORMATTER_JAVASCRIPT",
                "FORMATTER_CAYENNELPP"
              ],
              "type": "string"
            },
            "down_formatter_parameter": {
              "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
              "type": "string"
            },
            "up_formatter": {
              "default": "FORMATTER_NONE",
              "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
              "enum": [
                "FORMATTER_NONE",
                "FORMATTER_REPOSITORY",
                "FORMATTER_GRPC_SERVICE",
                "FORMATTER_JAVASCRIPT",
                "FORMATTER_CAYENNELPP"
              ],
              "type": "string"
            },
            "up_formatter_parameter": {
              "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "frequency_plan_id": {
          "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_server_address": {
          "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "last_dev_nonce": {
          "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_dev_status_received_at": {
          "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
          "format": "date-time",
          "type": "string"
        },
        "last_join_nonce": {
          "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_rj_count_0": {
          "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_rj_count_1": {
          "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_seen_at": {
          "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
          "format": "date-time",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "Location of the device. Stored in Entity Registry.",
          "type": "object"
        },
        "lora_alliance_profile_ids": {
          "properties": {
            "vendor_id": {
              "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
              "format": "int64",
              "type": "integer"
            },
            "vendor_profile_id": {
              "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "lorawan_phy_version": {
          "default": "PHY_UNKNOWN",
          "enum": [
            "PHY_UNKNOWN",
            "PHY_V1_0",
            "TS001_V1_0",
            "PHY_V1_0_1",
            "TS001_V1_0_1",
            "PHY_V1_0_2_REV_A",
            "RP001_V1_0_2",
            "PHY_V1_0_2_REV_B",
            "RP001_V1_0_2_REV_B",
            "PHY_V1_1_REV_A",
            "RP001_V1_1_REV_A",
            "PHY_V1_1_REV_B",
            "RP001_V1_1_REV_B",
            "PHY_V1_0_3_REV_A",
            "RP001_V1_0_3_REV_A",
            "RP002_V1_0_0",
            "RP002_V1_0_1",
            "RP002_V1_0_2",
            "RP002_V1_0_3",
            "RP002_V1_0_4"
          ],
          "type": "string"
        },
        "lorawan_version": {
          "default": "MAC_UNKNOWN",
          "enum": [
            "MAC_UNKNOWN",
            "MAC_V1_0",
            "MAC_V1_0_1",
            "MAC_V1_0_2",
            "MAC_V1_1",
            "MAC_V1_0_3",
            "MAC_V1_0_4"
          ],
          "type": "string"
        },
        "mac_settings": {
          "properties": {
            "adr": {
              "description": "Adaptive Data Rate settings.",
              "properties": {
                "disabled": {
                  "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                  "type": "object"
                },
                "dynamic": {
                  "description": "Configuration options for dynamic ADR.",
                  "properties": {
                    "channel_steering": {
                      "description": "EXPERIMENTAL: Channel steering settings.",
                      "properties": {
                        "disabled": {
                          "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                          "type": "object"
                        },
                        "lora_narrow": {
                          "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "margin": {
                      "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "float",
                      "type": "number"
                    },
                    "max_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "max_nb_trans": {
                      "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_tx_power_index": {
                      "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "min_nb_trans": {
                      "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_tx_power_index": {
                      "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "overrides": {
                      "description": "EXPERIMENTAL: Configuration overrides.",
                      "properties": {
                        "data_rate_0": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_1": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_10": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_11": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_12": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_13": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_14": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_15": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_2": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_3": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_4": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_5": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_6": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_7": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_8": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_9": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "static": {
                  "description": "Configuration options for static ADR.",
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "description": "Number of retransmissions.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "description": "Transmission power index to use.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "adr_margin": {
              "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
              "format": "float",
              "type": "number"
            },
            "beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "class_b_c_downlink_interval": {
              "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
              "type": "string"
            },
            "class_b_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "class_c_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "desired_adr_ack_delay_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_adr_ack_limit_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_eirp": {
              "properties": {
                "value": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "downlink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "factory_preset_frequencies": {
              "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "resets_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "schedule_downlinks": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "status_count_periodicity": {
              "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "format": "int64",
              "type": "integer"
            },
            "status_time_periodicity": {
              "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "supports_32_bit_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "uplink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "use_adr": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "mac_settings_profile_ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "profile_id": {
              "description": "Profile ID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "mac_state": {
          "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
          "properties": {
            "current_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "device_class": {
              "default": "CLASS_A",
              "enum": [
                "CLASS_A",
                "CLASS_B",
                "CLASS_C"
              ],
              "type": "string"
            },
            "last_adr_change_f_cnt_up": {
              "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
              "format": "int64",
              "type": "integer"
            },
            "last_confirmed_downlink_at": {
              "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_dev_status_f_cnt_up": {
              "description": "Frame counter value of last uplink containing DevStatusAns.",
              "format": "int64",
              "type": "integer"
            },
            "last_downlink_at": {
              "description": "Time when the last downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_network_initiated_downlink_at": {
              "description": "Time when the last network-initiated downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "lorawan_version": {
              "default": "MAC_UNKNOWN",
              "enum": [
                "MAC_UNKNOWN",
                "MAC_V1_0",
                "MAC_V1_0_1",
                "MAC_V1_0_2",
                "MAC_V1_1",
                "MAC_V1_0_3",
                "MAC_V1_0_4"
              ],
              "type": "string"
            },
            "pending_application_downlink": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pending_join_request": {
              "properties": {
                "cf_list": {
                  "properties": {
                    "ch_masks": {
                      "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "freq": {
                      "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                      "items": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "type": {
                      "default": "FREQUENCIES",
                      "enum": [
                        "FREQUENCIES",
                        "CHANNEL_MASKS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "downlink_settings": {
                  "properties": {
                    "opt_neg": {
                      "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                      "type": "boolean"
                    },
                    "rx1_dr_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_dr": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_relay_downlink": {
              "properties": {
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_requests": {
              "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "queued_join_accept": {
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "keys": {
                  "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                  "properties": {
                    "app_s_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "nwk_s_enc_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "s_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "payload": {
                  "description": "Payload of the join-accept received from Join Server.",
                  "format": "byte",
                  "type": "string"
                },
                "request": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "downlink_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "queued_responses": {
              "description": "Queued MAC responses.\nRegenerated on each uplink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_downlinks": {
              "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "payload": {
                    "properties": {
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "full_f_cnt": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_mac_command_identifiers": {
              "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
              "items": {
                "default": "CID_RFU_0",
                "enum": [
                  "CID_RFU_0",
                  "CID_RESET",
                  "CID_LINK_CHECK",
                  "CID_LINK_ADR",
                  "CID_DUTY_CYCLE",
                  "CID_RX_PARAM_SETUP",
                  "CID_DEV_STATUS",
                  "CID_NEW_CHANNEL",
                  "CID_RX_TIMING_SETUP",
                  "CID_TX_PARAM_SETUP",
                  "CID_DL_CHANNEL",
                  "CID_REKEY",
                  "CID_ADR_PARAM_SETUP",
                  "CID_DEVICE_TIME",
                  "CID_FORCE_REJOIN",
                  "CID_REJOIN_PARAM_SETUP",
                  "CID_PING_SLOT_INFO",
                  "CID_PING_SLOT_CHANNEL",
                  "CID_BEACON_TIMING",
                  "CID_BEACON_FREQ",
                  "CID_DEVICE_MODE",
                  "CID_RELAY_CONF",
                  "CID_RELAY_END_DEVICE_CONF",
                  "CID_RELAY_FILTER_LIST",
                  "CID_RELAY_UPDATE_UPLINK_LIST",
                  "CID_RELAY_CTRL_UPLINK_LIST",
                  "CID_RELAY_CONFIGURE_FWD_LIMIT",
                  "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                ],
                "title": "- CID_BEACON_TIMING: Deprecated",
                "type": "string"
              },
              "type": "array"
            },
            "recent_uplinks": {
              "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "device_channel_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "payload": {
                    "properties": {
                      "join_accept_payload": {
                        "properties": {
                          "cf_list": {
                            "properties": {
                              "ch_masks": {
                                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                "items": {
                                  "type": "boolean"
                                },
                                "type": "array"
                              },
                              "freq": {
                                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                "items": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "type": "array"
                              },
                              "type": {
                                "default": "FREQUENCIES",
                                "enum": [
                                  "FREQUENCIES",
                                  "CHANNEL_MASKS"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "dev_addr": {
                            "example": "2600ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dl_settings": {
                            "properties": {
                              "opt_neg": {
                                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                "type": "boolean"
                              },
                              "rx1_dr_offset": {
                                "default": "DATA_RATE_OFFSET_0",
                                "enum": [
                                  "DATA_RATE_OFFSET_0",
                                  "DATA_RATE_OFFSET_1",
                                  "DATA_RATE_OFFSET_2",
                                  "DATA_RATE_OFFSET_3",
                                  "DATA_RATE_OFFSET_4",
                                  "DATA_RATE_OFFSET_5",
                                  "DATA_RATE_OFFSET_6",
                                  "DATA_RATE_OFFSET_7"
                                ],
                                "type": "string"
                              },
                              "rx2_dr": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "encrypted": {
                            "format": "byte",
                            "type": "string"
                          },
                          "join_nonce": {
                            "example": "ABCDEF",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rx_delay": {
                            "default": "RX_DELAY_0",
                            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                            "enum": [
                              "RX_DELAY_0",
                              "RX_DELAY_1",
                              "RX_DELAY_2",
                              "RX_DELAY_3",
                              "RX_DELAY_4",
                              "RX_DELAY_5",
                              "RX_DELAY_6",
                              "RX_DELAY_7",
                              "RX_DELAY_8",
                              "RX_DELAY_9",
                              "RX_DELAY_10",
                              "RX_DELAY_11",
                              "RX_DELAY_12",
                              "RX_DELAY_13",
                              "RX_DELAY_14",
                              "RX_DELAY_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dev_nonce": {
                            "example": "ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          },
                          "major": {
                            "default": "LORAWAN_R1",
                            "enum": [
                              "LORAWAN_R1"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "decoded_payload": {
                            "type": "object"
                          },
                          "f_hdr": {
                            "properties": {
                              "dev_addr": {
                                "example": "2600ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "f_cnt": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "f_ctrl": {
                                "properties": {
                                  "ack": {
                                    "type": "boolean"
                                  },
                                  "adr": {
                                    "type": "boolean"
                                  },
                                  "adr_ack_req": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "class_b": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "f_pending": {
                                    "description": "Only on downlink.",
                                    "type": "boolean"
                                  }
                                },
                                "type": "object"
                              },
                              "f_opts": {
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "frm_payload": {
                            "format": "byte",
                            "type": "string"
                          },
                          "full_f_cnt": {
                            "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "mic": {
                        "format": "byte",
                        "type": "string"
                      },
                      "rejoin_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rejoin_cnt": {
                            "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "rejoin_type": {
                            "default": "CONTEXT",
                            "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                            "enum": [
                              "CONTEXT",
                              "SESSION",
                              "KEYS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "title": "Message represents a LoRaWAN message",
                    "type": "object"
                  },
                  "received_at": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "rx_metadata": {
                    "items": {
                      "properties": {
                        "channel_rssi": {
                          "format": "float",
                          "type": "number"
                        },
                        "downlink_path_constraint": {
                          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                          "enum": [
                            "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                            "DOWNLINK_PATH_CONSTRAINT_NEVER"
                          ],
                          "type": "string"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "packet_broker": {
                          "type": "object"
                        },
                        "relay": {
                          "type": "object"
                        },
                        "snr": {
                          "format": "float",
                          "type": "number"
                        },
                        "uplink_token": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "settings": {
                    "properties": {
                      "data_rate": {
                        "properties": {
                          "fsk": {
                            "properties": {
                              "bit_rate": {
                                "description": "Bit rate (bps).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lora": {
                            "properties": {
                              "bandwidth": {
                                "description": "Bandwidth (Hz).",
                                "format": "int64",
                                "type": "integer"
                              },
                              "coding_rate": {
                                "type": "string"
                              },
                              "spreading_factor": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lrfhss": {
                            "properties": {
                              "coding_rate": {
                                "type": "string"
                              },
                              "modulation_type": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "operating_channel_width": {
                                "description": "Operating Channel Width (Hz).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "rejected_adr_data_rate_indexes": {
              "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
              "items": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "rejected_adr_tx_power_indexes": {
              "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
              "items": {
                "format": "int64",
                "type": "integer"
              },
              "type": "array"
            },
            "rejected_data_rate_ranges": {
              "additionalProperties": {
                "properties": {
                  "ranges": {
                    "items": {
                      "properties": {
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "description": "Data rate ranges rejected by the device per frequency.",
              "type": "object"
            },
            "rejected_frequencies": {
              "description": "Frequencies rejected by the device.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "rx_windows_available": {
              "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "max_frequency": {
          "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "format": "uint64",
          "type": "string"
        },
        "min_frequency": {
          "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "format": "uint64",
          "type": "string"
        },
        "multicast": {
          "description": "Indicates whether this device represents a multicast group.",
          "type": "boolean"
        },
        "name": {
          "description": "Friendly name of the device. Stored in Entity Registry.",
          "type": "string"
        },
        "net_id": {
          "description": "Home NetID. Stored in Join Server.",
          "example": "000013",
          "format": "string",
          "type": "string"
        },
        "network_server_address": {
          "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "network_server_kek_label": {
          "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
          "type": "string"
        },
        "pending_mac_state": {
          "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
          "properties": {
            "current_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "device_class": {
              "default": "CLASS_A",
              "enum": [
                "CLASS_A",
                "CLASS_B",
                "CLASS_C"
              ],
              "type": "string"
            },
            "last_adr_change_f_cnt_up": {
              "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
              "format": "int64",
              "type": "integer"
            },
            "last_confirmed_downlink_at": {
              "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_dev_status_f_cnt_up": {
              "description": "Frame counter value of last uplink containing DevStatusAns.",
              "format": "int64",
              "type": "integer"
            },
            "last_downlink_at": {
              "description": "Time when the last downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_network_initiated_downlink_at": {
              "description": "Time when the last network-initiated downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "lorawan_version": {
              "default": "MAC_UNKNOWN",
              "enum": [
                "MAC_UNKNOWN",
                "MAC_V1_0",
                "MAC_V1_0_1",
                "MAC_V1_0_2",
                "MAC_V1_1",
                "MAC_V1_0_3",
                "MAC_V1_0_4"
              ],
              "type": "string"
            },
            "pending_application_downlink": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pending_join_request": {
              "properties": {
                "cf_list": {
                  "properties": {
                    "ch_masks": {
                      "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "freq": {
                      "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                      "items": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "type": {
                      "default": "FREQUENCIES",
                      "enum": [
                        "FREQUENCIES",
                        "CHANNEL_MASKS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "downlink_settings": {
                  "properties": {
                    "opt_neg": {
                      "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                      "type": "boolean"
                    },
                    "rx1_dr_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_dr": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_relay_downlink": {
              "properties": {
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_requests": {
              "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "queued_join_accept": {
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "keys": {
                  "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                  "properties": {
                    "app_s_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "nwk_s_enc_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "s_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "payload": {
                  "description": "Payload of the join-accept received from Join Server.",
                  "format": "byte",
                  "type": "string"
                },
                "request": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "downlink_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "queued_responses": {
              "description": "Queued MAC responses.\nRegenerated on each uplink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_downlinks": {
              "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "payload": {
                    "properties": {
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "full_f_cnt": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_mac_command_identifiers": {
              "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
              "items": {
                "default": "CID_RFU_0",
                "enum": [
                  "CID_RFU_0",
                  "CID_RESET",
                  "CID_LINK_CHECK",
                  "CID_LINK_ADR",
                  "CID_DUTY_CYCLE",
                  "CID_RX_PARAM_SETUP",
                  "CID_DEV_STATUS",
                  "CID_NEW_CHANNEL",
                  "CID_RX_TIMING_SETUP",
                  "CID_TX_PARAM_SETUP",
                  "CID_DL_CHANNEL",
                  "CID_REKEY",
                  "CID_ADR_PARAM_SETUP",
                  "CID_DEVICE_TIME",
                  "CID_FORCE_REJOIN",
                  "CID_REJOIN_PARAM_SETUP",
                  "CID_PING_SLOT_INFO",
                  "CID_PING_SLOT_CHANNEL",
                  "CID_BEACON_TIMING",
                  "CID_BEACON_FREQ",
                  "CID_DEVICE_MODE",
                  "CID_RELAY_CONF",
                  "CID_RELAY_END_DEVICE_CONF",
                  "CID_RELAY_FILTER_LIST",
                  "CID_RELAY_UPDATE_UPLINK_LIST",
                  "CID_RELAY_CTRL_UPLINK_LIST",
                  "CID_RELAY_CONFIGURE_FWD_LIMIT",
                  "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                ],
                "title": "- CID_BEACON_TIMING: Deprecated",
                "type": "string"
              },
              "type": "array"
            },
            "recent_uplinks": {
              "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "device_channel_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "payload": {
                    "properties": {
                      "join_accept_payload": {
                        "properties": {
                          "cf_list": {
                            "properties": {
                              "ch_masks": {
                                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                "items": {
                                  "type": "boolean"
                                },
                                "type": "array"
                              },
                              "freq": {
                                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                "items": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "type": "array"
                              },
                              "type": {
                                "default": "FREQUENCIES",
                                "enum": [
                                  "FREQUENCIES",
                                  "CHANNEL_MASKS"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "dev_addr": {
                            "example": "2600ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dl_settings": {
                            "properties": {
                              "opt_neg": {
                                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                "type": "boolean"
                              },
                              "rx1_dr_offset": {
                                "default": "DATA_RATE_OFFSET_0",
                                "enum": [
                                  "DATA_RATE_OFFSET_0",
                                  "DATA_RATE_OFFSET_1",
                                  "DATA_RATE_OFFSET_2",
                                  "DATA_RATE_OFFSET_3",
                                  "DATA_RATE_OFFSET_4",
                                  "DATA_RATE_OFFSET_5",
                                  "DATA_RATE_OFFSET_6",
                                  "DATA_RATE_OFFSET_7"
                                ],
                                "type": "string"
                              },
                              "rx2_dr": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "encrypted": {
                            "format": "byte",
                            "type": "string"
                          },
                          "join_nonce": {
                            "example": "ABCDEF",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rx_delay": {
                            "default": "RX_DELAY_0",
                            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                            "enum": [
                              "RX_DELAY_0",
                              "RX_DELAY_1",
                              "RX_DELAY_2",
                              "RX_DELAY_3",
                              "RX_DELAY_4",
                              "RX_DELAY_5",
                              "RX_DELAY_6",
                              "RX_DELAY_7",
                              "RX_DELAY_8",
                              "RX_DELAY_9",
                              "RX_DELAY_10",
                              "RX_DELAY_11",
                              "RX_DELAY_12",
                              "RX_DELAY_13",
                              "RX_DELAY_14",
                              "RX_DELAY_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dev_nonce": {
                            "example": "ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          },
                          "major": {
                            "default": "LORAWAN_R1",
                            "enum": [
                              "LORAWAN_R1"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "decoded_payload": {
                            "type": "object"
                          },
                          "f_hdr": {
                            "properties": {
                              "dev_addr": {
                                "example": "2600ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "f_cnt": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "f_ctrl": {
                                "properties": {
                                  "ack": {
                                    "type": "boolean"
                                  },
                                  "adr": {
                                    "type": "boolean"
                                  },
                                  "adr_ack_req": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "class_b": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "f_pending": {
                                    "description": "Only on downlink.",
                                    "type": "boolean"
                                  }
                                },
                                "type": "object"
                              },
                              "f_opts": {
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "frm_payload": {
                            "format": "byte",
                            "type": "string"
                          },
                          "full_f_cnt": {
                            "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "mic": {
                        "format": "byte",
                        "type": "string"
                      },
                      "rejoin_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rejoin_cnt": {
                            "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "rejoin_type": {
                            "default": "CONTEXT",
                            "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                            "enum": [
                              "CONTEXT",
                              "SESSION",
                              "KEYS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "title": "Message represents a LoRaWAN message",
                    "type": "object"
                  },
                  "received_at": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "rx_metadata": {
                    "items": {
                      "properties": {
                        "channel_rssi": {
                          "format": "float",
                          "type": "number"
                        },
                        "downlink_path_constraint": {
                          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                          "enum": [
                            "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                            "DOWNLINK_PATH_CONSTRAINT_NEVER"
                          ],
                          "type": "string"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "packet_broker": {
                          "type": "object"
                        },
                        "relay": {
                          "type": "object"
                        },
                        "snr": {
                          "format": "float",
                          "type": "number"
                        },
                        "uplink_token": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "settings": {
                    "properties": {
                      "data_rate": {
                        "properties": {
                          "fsk": {
                            "properties": {
                              "bit_rate": {
                                "description": "Bit rate (bps).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lora": {
                            "properties": {
                              "bandwidth": {
                                "description": "Bandwidth (Hz).",
                                "format": "int64",
                                "type": "integer"
                              },
                              "coding_rate": {
                                "type": "string"
                              },
                              "spreading_factor": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lrfhss": {
                            "properties": {
                              "coding_rate": {
                                "type": "string"
                              },
                              "modulation_type": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "operating_channel_width": {
                                "description": "Operating Channel Width (Hz).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "rejected_adr_data_rate_indexes": {
              "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
              "items": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "rejected_adr_tx_power_indexes": {
              "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
              "items": {
                "format": "int64",
                "type": "integer"
              },
              "type": "array"
            },
            "rejected_data_rate_ranges": {
              "additionalProperties": {
                "properties": {
                  "ranges": {
                    "items": {
                      "properties": {
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "description": "Data rate ranges rejected by the device per frequency.",
              "type": "object"
            },
            "rejected_frequencies": {
              "description": "Frequencies rejected by the device.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "rx_windows_available": {
              "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "pending_session": {
          "properties": {
            "dev_addr": {
              "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "keys": {
              "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
              "properties": {
                "app_s_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "f_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "nwk_s_enc_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "s_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "last_a_f_cnt_down": {
              "description": "Last application downlink frame counter value used. Application Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_conf_f_cnt_down": {
              "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_f_cnt_up": {
              "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
              "format": "int64",
              "type": "integer"
            },
            "last_n_f_cnt_down": {
              "description": "Last network downlink frame counter value used. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "queued_application_downlinks": {
              "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
              "items": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "started_at": {
              "description": "Time when the session started. Network Server only.",
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "picture": {
          "properties": {
            "embedded": {
              "properties": {
                "data": {
                  "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                  "format": "byte",
                  "type": "string"
                },
                "mime_type": {
                  "description": "MIME type of the picture.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "sizes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "URLs of the picture for different sizes, if available on a CDN.",
              "type": "object"
            }
          },
          "type": "object"
        },
        "power_state": {
          "default": "POWER_UNKNOWN",
          "description": "Power state of the device.",
          "enum": [
            "POWER_UNKNOWN",
            "POWER_BATTERY",
            "POWER_EXTERNAL"
          ],
          "type": "string"
        },
        "provisioner_id": {
          "description": "ID of the provisioner. Stored in Join Server.",
          "type": "string"
        },
        "provisioning_data": {
          "description": "Vendor-specific provisioning data. Stored in Join Server.",
          "type": "object"
        },
        "queued_application_downlinks": {
          "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
          "items": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "resets_join_nonces": {
          "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "root_keys": {
          "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
          "properties": {
            "app_key": {
              "properties": {
                "encrypted_key": {
                  "format": "byte",
                  "type": "string"
                },
                "kek_label": {
                  "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                  "type": "string"
                },
                "key": {
                  "description": "The unencrypted AES key.",
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "nwk_key": {
              "properties": {
                "encrypted_key": {
                  "format": "byte",
                  "type": "string"
                },
                "kek_label": {
                  "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                  "type": "string"
                },
                "key": {
                  "description": "The unencrypted AES key.",
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "root_key_id": {
              "description": "Join Server issued identifier for the root keys.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "serial_number": {
          "type": "string"
        },
        "service_profile_id": {
          "description": "Default service profile. Stored in Entity Registry.",
          "type": "string"
        },
        "session": {
          "properties": {
            "dev_addr": {
              "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "keys": {
              "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
              "properties": {
                "app_s_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "f_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "nwk_s_enc_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "s_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "last_a_f_cnt_down": {
              "description": "Last application downlink frame counter value used. Application Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_conf_f_cnt_down": {
              "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_f_cnt_up": {
              "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
              "format": "int64",
              "type": "integer"
            },
            "last_n_f_cnt_down": {
              "description": "Last network downlink frame counter value used. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "queued_application_downlinks": {
              "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
              "items": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "started_at": {
              "description": "Time when the session started. Network Server only.",
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "skip_payload_crypto": {
          "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
          "type": "boolean"
        },
        "skip_payload_crypto_override": {
          "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
          "type": "boolean"
        },
        "supports_class_b": {
          "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "supports_class_c": {
          "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "supports_join": {
          "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "used_dev_nonces": {
          "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
          "items": {
            "format": "int64",
            "type": "integer"
          },
          "type": "array"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/applications/{application_ids.application_id}/devices/filter

List end devices in the given application.

Expand Collapse

Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the end device fields that should be returned.\nSee the API reference for which fields can be returned by the different services.",
    "type": "string"
  },
  "filters": {
    "items": {
      "description": "Filter end devices by fields.",
      "properties": {
        "updated_since": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "order": {
    "description": "Order the results by this field path (must be present in the field mask).\nDefault ordering is by ID. Prepend with a minus (-) to reverse the order.",
    "type": "string"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_devices": {
    "items": {
      "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
      "properties": {
        "activated_at": {
          "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
          "format": "date-time",
          "type": "string"
        },
        "application_server_address": {
          "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "application_server_id": {
          "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
          "type": "string"
        },
        "application_server_kek_label": {
          "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
          "type": "object"
        },
        "battery_percentage": {
          "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
          "format": "float",
          "type": "number"
        },
        "claim_authentication_code": {
          "description": "Authentication code for end devices.",
          "properties": {
            "valid_from": {
              "format": "date-time",
              "type": "string"
            },
            "valid_to": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "Description of the device. Stored in Entity Registry.",
          "type": "string"
        },
        "downlink_margin": {
          "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
          "format": "int32",
          "type": "integer"
        },
        "formatters": {
          "properties": {
            "down_formatter": {
              "default": "FORMATTER_NONE",
              "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
              "enum": [
                "FORMATTER_NONE",
                "FORMATTER_REPOSITORY",
                "FORMATTER_GRPC_SERVICE",
                "FORMATTER_JAVASCRIPT",
                "FORMATTER_CAYENNELPP"
              ],
              "type": "string"
            },
            "down_formatter_parameter": {
              "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
              "type": "string"
            },
            "up_formatter": {
              "default": "FORMATTER_NONE",
              "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
              "enum": [
                "FORMATTER_NONE",
                "FORMATTER_REPOSITORY",
                "FORMATTER_GRPC_SERVICE",
                "FORMATTER_JAVASCRIPT",
                "FORMATTER_CAYENNELPP"
              ],
              "type": "string"
            },
            "up_formatter_parameter": {
              "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "frequency_plan_id": {
          "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_server_address": {
          "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "last_dev_nonce": {
          "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_dev_status_received_at": {
          "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
          "format": "date-time",
          "type": "string"
        },
        "last_join_nonce": {
          "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_rj_count_0": {
          "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_rj_count_1": {
          "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_seen_at": {
          "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
          "format": "date-time",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "Location of the device. Stored in Entity Registry.",
          "type": "object"
        },
        "lora_alliance_profile_ids": {
          "properties": {
            "vendor_id": {
              "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
              "format": "int64",
              "type": "integer"
            },
            "vendor_profile_id": {
              "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "lorawan_phy_version": {
          "default": "PHY_UNKNOWN",
          "enum": [
            "PHY_UNKNOWN",
            "PHY_V1_0",
            "TS001_V1_0",
            "PHY_V1_0_1",
            "TS001_V1_0_1",
            "PHY_V1_0_2_REV_A",
            "RP001_V1_0_2",
            "PHY_V1_0_2_REV_B",
            "RP001_V1_0_2_REV_B",
            "PHY_V1_1_REV_A",
            "RP001_V1_1_REV_A",
            "PHY_V1_1_REV_B",
            "RP001_V1_1_REV_B",
            "PHY_V1_0_3_REV_A",
            "RP001_V1_0_3_REV_A",
            "RP002_V1_0_0",
            "RP002_V1_0_1",
            "RP002_V1_0_2",
            "RP002_V1_0_3",
            "RP002_V1_0_4"
          ],
          "type": "string"
        },
        "lorawan_version": {
          "default": "MAC_UNKNOWN",
          "enum": [
            "MAC_UNKNOWN",
            "MAC_V1_0",
            "MAC_V1_0_1",
            "MAC_V1_0_2",
            "MAC_V1_1",
            "MAC_V1_0_3",
            "MAC_V1_0_4"
          ],
          "type": "string"
        },
        "mac_settings": {
          "properties": {
            "adr": {
              "description": "Adaptive Data Rate settings.",
              "properties": {
                "disabled": {
                  "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                  "type": "object"
                },
                "dynamic": {
                  "description": "Configuration options for dynamic ADR.",
                  "properties": {
                    "channel_steering": {
                      "description": "EXPERIMENTAL: Channel steering settings.",
                      "properties": {
                        "disabled": {
                          "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                          "type": "object"
                        },
                        "lora_narrow": {
                          "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "margin": {
                      "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "float",
                      "type": "number"
                    },
                    "max_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "max_nb_trans": {
                      "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_tx_power_index": {
                      "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "min_nb_trans": {
                      "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_tx_power_index": {
                      "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "overrides": {
                      "description": "EXPERIMENTAL: Configuration overrides.",
                      "properties": {
                        "data_rate_0": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_1": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_10": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_11": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_12": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_13": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_14": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_15": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_2": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_3": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_4": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_5": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_6": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_7": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_8": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_9": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "static": {
                  "description": "Configuration options for static ADR.",
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "description": "Number of retransmissions.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "description": "Transmission power index to use.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "adr_margin": {
              "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
              "format": "float",
              "type": "number"
            },
            "beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "class_b_c_downlink_interval": {
              "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
              "type": "string"
            },
            "class_b_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "class_c_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "desired_adr_ack_delay_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_adr_ack_limit_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_eirp": {
              "properties": {
                "value": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "downlink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "factory_preset_frequencies": {
              "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "resets_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "schedule_downlinks": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "status_count_periodicity": {
              "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "format": "int64",
              "type": "integer"
            },
            "status_time_periodicity": {
              "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "supports_32_bit_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "uplink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "use_adr": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "mac_settings_profile_ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "profile_id": {
              "description": "Profile ID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "mac_state": {
          "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
          "properties": {
            "current_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "device_class": {
              "default": "CLASS_A",
              "enum": [
                "CLASS_A",
                "CLASS_B",
                "CLASS_C"
              ],
              "type": "string"
            },
            "last_adr_change_f_cnt_up": {
              "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
              "format": "int64",
              "type": "integer"
            },
            "last_confirmed_downlink_at": {
              "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_dev_status_f_cnt_up": {
              "description": "Frame counter value of last uplink containing DevStatusAns.",
              "format": "int64",
              "type": "integer"
            },
            "last_downlink_at": {
              "description": "Time when the last downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_network_initiated_downlink_at": {
              "description": "Time when the last network-initiated downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "lorawan_version": {
              "default": "MAC_UNKNOWN",
              "enum": [
                "MAC_UNKNOWN",
                "MAC_V1_0",
                "MAC_V1_0_1",
                "MAC_V1_0_2",
                "MAC_V1_1",
                "MAC_V1_0_3",
                "MAC_V1_0_4"
              ],
              "type": "string"
            },
            "pending_application_downlink": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pending_join_request": {
              "properties": {
                "cf_list": {
                  "properties": {
                    "ch_masks": {
                      "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "freq": {
                      "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                      "items": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "type": {
                      "default": "FREQUENCIES",
                      "enum": [
                        "FREQUENCIES",
                        "CHANNEL_MASKS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "downlink_settings": {
                  "properties": {
                    "opt_neg": {
                      "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                      "type": "boolean"
                    },
                    "rx1_dr_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_dr": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_relay_downlink": {
              "properties": {
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_requests": {
              "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "queued_join_accept": {
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "keys": {
                  "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                  "properties": {
                    "app_s_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "nwk_s_enc_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "s_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "payload": {
                  "description": "Payload of the join-accept received from Join Server.",
                  "format": "byte",
                  "type": "string"
                },
                "request": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "downlink_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "queued_responses": {
              "description": "Queued MAC responses.\nRegenerated on each uplink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_downlinks": {
              "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "payload": {
                    "properties": {
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "full_f_cnt": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_mac_command_identifiers": {
              "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
              "items": {
                "default": "CID_RFU_0",
                "enum": [
                  "CID_RFU_0",
                  "CID_RESET",
                  "CID_LINK_CHECK",
                  "CID_LINK_ADR",
                  "CID_DUTY_CYCLE",
                  "CID_RX_PARAM_SETUP",
                  "CID_DEV_STATUS",
                  "CID_NEW_CHANNEL",
                  "CID_RX_TIMING_SETUP",
                  "CID_TX_PARAM_SETUP",
                  "CID_DL_CHANNEL",
                  "CID_REKEY",
                  "CID_ADR_PARAM_SETUP",
                  "CID_DEVICE_TIME",
                  "CID_FORCE_REJOIN",
                  "CID_REJOIN_PARAM_SETUP",
                  "CID_PING_SLOT_INFO",
                  "CID_PING_SLOT_CHANNEL",
                  "CID_BEACON_TIMING",
                  "CID_BEACON_FREQ",
                  "CID_DEVICE_MODE",
                  "CID_RELAY_CONF",
                  "CID_RELAY_END_DEVICE_CONF",
                  "CID_RELAY_FILTER_LIST",
                  "CID_RELAY_UPDATE_UPLINK_LIST",
                  "CID_RELAY_CTRL_UPLINK_LIST",
                  "CID_RELAY_CONFIGURE_FWD_LIMIT",
                  "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                ],
                "title": "- CID_BEACON_TIMING: Deprecated",
                "type": "string"
              },
              "type": "array"
            },
            "recent_uplinks": {
              "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "device_channel_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "payload": {
                    "properties": {
                      "join_accept_payload": {
                        "properties": {
                          "cf_list": {
                            "properties": {
                              "ch_masks": {
                                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                "items": {
                                  "type": "boolean"
                                },
                                "type": "array"
                              },
                              "freq": {
                                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                "items": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "type": "array"
                              },
                              "type": {
                                "default": "FREQUENCIES",
                                "enum": [
                                  "FREQUENCIES",
                                  "CHANNEL_MASKS"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "dev_addr": {
                            "example": "2600ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dl_settings": {
                            "properties": {
                              "opt_neg": {
                                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                "type": "boolean"
                              },
                              "rx1_dr_offset": {
                                "default": "DATA_RATE_OFFSET_0",
                                "enum": [
                                  "DATA_RATE_OFFSET_0",
                                  "DATA_RATE_OFFSET_1",
                                  "DATA_RATE_OFFSET_2",
                                  "DATA_RATE_OFFSET_3",
                                  "DATA_RATE_OFFSET_4",
                                  "DATA_RATE_OFFSET_5",
                                  "DATA_RATE_OFFSET_6",
                                  "DATA_RATE_OFFSET_7"
                                ],
                                "type": "string"
                              },
                              "rx2_dr": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "encrypted": {
                            "format": "byte",
                            "type": "string"
                          },
                          "join_nonce": {
                            "example": "ABCDEF",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rx_delay": {
                            "default": "RX_DELAY_0",
                            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                            "enum": [
                              "RX_DELAY_0",
                              "RX_DELAY_1",
                              "RX_DELAY_2",
                              "RX_DELAY_3",
                              "RX_DELAY_4",
                              "RX_DELAY_5",
                              "RX_DELAY_6",
                              "RX_DELAY_7",
                              "RX_DELAY_8",
                              "RX_DELAY_9",
                              "RX_DELAY_10",
                              "RX_DELAY_11",
                              "RX_DELAY_12",
                              "RX_DELAY_13",
                              "RX_DELAY_14",
                              "RX_DELAY_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dev_nonce": {
                            "example": "ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          },
                          "major": {
                            "default": "LORAWAN_R1",
                            "enum": [
                              "LORAWAN_R1"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "decoded_payload": {
                            "type": "object"
                          },
                          "f_hdr": {
                            "properties": {
                              "dev_addr": {
                                "example": "2600ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "f_cnt": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "f_ctrl": {
                                "properties": {
                                  "ack": {
                                    "type": "boolean"
                                  },
                                  "adr": {
                                    "type": "boolean"
                                  },
                                  "adr_ack_req": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "class_b": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "f_pending": {
                                    "description": "Only on downlink.",
                                    "type": "boolean"
                                  }
                                },
                                "type": "object"
                              },
                              "f_opts": {
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "frm_payload": {
                            "format": "byte",
                            "type": "string"
                          },
                          "full_f_cnt": {
                            "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "mic": {
                        "format": "byte",
                        "type": "string"
                      },
                      "rejoin_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rejoin_cnt": {
                            "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "rejoin_type": {
                            "default": "CONTEXT",
                            "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                            "enum": [
                              "CONTEXT",
                              "SESSION",
                              "KEYS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "title": "Message represents a LoRaWAN message",
                    "type": "object"
                  },
                  "received_at": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "rx_metadata": {
                    "items": {
                      "properties": {
                        "channel_rssi": {
                          "format": "float",
                          "type": "number"
                        },
                        "downlink_path_constraint": {
                          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                          "enum": [
                            "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                            "DOWNLINK_PATH_CONSTRAINT_NEVER"
                          ],
                          "type": "string"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "packet_broker": {
                          "type": "object"
                        },
                        "relay": {
                          "type": "object"
                        },
                        "snr": {
                          "format": "float",
                          "type": "number"
                        },
                        "uplink_token": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "settings": {
                    "properties": {
                      "data_rate": {
                        "properties": {
                          "fsk": {
                            "properties": {
                              "bit_rate": {
                                "description": "Bit rate (bps).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lora": {
                            "properties": {
                              "bandwidth": {
                                "description": "Bandwidth (Hz).",
                                "format": "int64",
                                "type": "integer"
                              },
                              "coding_rate": {
                                "type": "string"
                              },
                              "spreading_factor": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lrfhss": {
                            "properties": {
                              "coding_rate": {
                                "type": "string"
                              },
                              "modulation_type": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "operating_channel_width": {
                                "description": "Operating Channel Width (Hz).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "rejected_adr_data_rate_indexes": {
              "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
              "items": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "rejected_adr_tx_power_indexes": {
              "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
              "items": {
                "format": "int64",
                "type": "integer"
              },
              "type": "array"
            },
            "rejected_data_rate_ranges": {
              "additionalProperties": {
                "properties": {
                  "ranges": {
                    "items": {
                      "properties": {
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "description": "Data rate ranges rejected by the device per frequency.",
              "type": "object"
            },
            "rejected_frequencies": {
              "description": "Frequencies rejected by the device.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "rx_windows_available": {
              "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "max_frequency": {
          "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "format": "uint64",
          "type": "string"
        },
        "min_frequency": {
          "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "format": "uint64",
          "type": "string"
        },
        "multicast": {
          "description": "Indicates whether this device represents a multicast group.",
          "type": "boolean"
        },
        "name": {
          "description": "Friendly name of the device. Stored in Entity Registry.",
          "type": "string"
        },
        "net_id": {
          "description": "Home NetID. Stored in Join Server.",
          "example": "000013",
          "format": "string",
          "type": "string"
        },
        "network_server_address": {
          "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "network_server_kek_label": {
          "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
          "type": "string"
        },
        "pending_mac_state": {
          "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
          "properties": {
            "current_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "device_class": {
              "default": "CLASS_A",
              "enum": [
                "CLASS_A",
                "CLASS_B",
                "CLASS_C"
              ],
              "type": "string"
            },
            "last_adr_change_f_cnt_up": {
              "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
              "format": "int64",
              "type": "integer"
            },
            "last_confirmed_downlink_at": {
              "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_dev_status_f_cnt_up": {
              "description": "Frame counter value of last uplink containing DevStatusAns.",
              "format": "int64",
              "type": "integer"
            },
            "last_downlink_at": {
              "description": "Time when the last downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_network_initiated_downlink_at": {
              "description": "Time when the last network-initiated downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "lorawan_version": {
              "default": "MAC_UNKNOWN",
              "enum": [
                "MAC_UNKNOWN",
                "MAC_V1_0",
                "MAC_V1_0_1",
                "MAC_V1_0_2",
                "MAC_V1_1",
                "MAC_V1_0_3",
                "MAC_V1_0_4"
              ],
              "type": "string"
            },
            "pending_application_downlink": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pending_join_request": {
              "properties": {
                "cf_list": {
                  "properties": {
                    "ch_masks": {
                      "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "freq": {
                      "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                      "items": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "type": {
                      "default": "FREQUENCIES",
                      "enum": [
                        "FREQUENCIES",
                        "CHANNEL_MASKS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "downlink_settings": {
                  "properties": {
                    "opt_neg": {
                      "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                      "type": "boolean"
                    },
                    "rx1_dr_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_dr": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_relay_downlink": {
              "properties": {
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_requests": {
              "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "queued_join_accept": {
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "keys": {
                  "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                  "properties": {
                    "app_s_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "nwk_s_enc_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "s_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "payload": {
                  "description": "Payload of the join-accept received from Join Server.",
                  "format": "byte",
                  "type": "string"
                },
                "request": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "downlink_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "queued_responses": {
              "description": "Queued MAC responses.\nRegenerated on each uplink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_downlinks": {
              "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "payload": {
                    "properties": {
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "full_f_cnt": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_mac_command_identifiers": {
              "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
              "items": {
                "default": "CID_RFU_0",
                "enum": [
                  "CID_RFU_0",
                  "CID_RESET",
                  "CID_LINK_CHECK",
                  "CID_LINK_ADR",
                  "CID_DUTY_CYCLE",
                  "CID_RX_PARAM_SETUP",
                  "CID_DEV_STATUS",
                  "CID_NEW_CHANNEL",
                  "CID_RX_TIMING_SETUP",
                  "CID_TX_PARAM_SETUP",
                  "CID_DL_CHANNEL",
                  "CID_REKEY",
                  "CID_ADR_PARAM_SETUP",
                  "CID_DEVICE_TIME",
                  "CID_FORCE_REJOIN",
                  "CID_REJOIN_PARAM_SETUP",
                  "CID_PING_SLOT_INFO",
                  "CID_PING_SLOT_CHANNEL",
                  "CID_BEACON_TIMING",
                  "CID_BEACON_FREQ",
                  "CID_DEVICE_MODE",
                  "CID_RELAY_CONF",
                  "CID_RELAY_END_DEVICE_CONF",
                  "CID_RELAY_FILTER_LIST",
                  "CID_RELAY_UPDATE_UPLINK_LIST",
                  "CID_RELAY_CTRL_UPLINK_LIST",
                  "CID_RELAY_CONFIGURE_FWD_LIMIT",
                  "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                ],
                "title": "- CID_BEACON_TIMING: Deprecated",
                "type": "string"
              },
              "type": "array"
            },
            "recent_uplinks": {
              "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "device_channel_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "payload": {
                    "properties": {
                      "join_accept_payload": {
                        "properties": {
                          "cf_list": {
                            "properties": {
                              "ch_masks": {
                                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                "items": {
                                  "type": "boolean"
                                },
                                "type": "array"
                              },
                              "freq": {
                                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                "items": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "type": "array"
                              },
                              "type": {
                                "default": "FREQUENCIES",
                                "enum": [
                                  "FREQUENCIES",
                                  "CHANNEL_MASKS"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "dev_addr": {
                            "example": "2600ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dl_settings": {
                            "properties": {
                              "opt_neg": {
                                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                "type": "boolean"
                              },
                              "rx1_dr_offset": {
                                "default": "DATA_RATE_OFFSET_0",
                                "enum": [
                                  "DATA_RATE_OFFSET_0",
                                  "DATA_RATE_OFFSET_1",
                                  "DATA_RATE_OFFSET_2",
                                  "DATA_RATE_OFFSET_3",
                                  "DATA_RATE_OFFSET_4",
                                  "DATA_RATE_OFFSET_5",
                                  "DATA_RATE_OFFSET_6",
                                  "DATA_RATE_OFFSET_7"
                                ],
                                "type": "string"
                              },
                              "rx2_dr": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "encrypted": {
                            "format": "byte",
                            "type": "string"
                          },
                          "join_nonce": {
                            "example": "ABCDEF",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rx_delay": {
                            "default": "RX_DELAY_0",
                            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                            "enum": [
                              "RX_DELAY_0",
                              "RX_DELAY_1",
                              "RX_DELAY_2",
                              "RX_DELAY_3",
                              "RX_DELAY_4",
                              "RX_DELAY_5",
                              "RX_DELAY_6",
                              "RX_DELAY_7",
                              "RX_DELAY_8",
                              "RX_DELAY_9",
                              "RX_DELAY_10",
                              "RX_DELAY_11",
                              "RX_DELAY_12",
                              "RX_DELAY_13",
                              "RX_DELAY_14",
                              "RX_DELAY_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dev_nonce": {
                            "example": "ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          },
                          "major": {
                            "default": "LORAWAN_R1",
                            "enum": [
                              "LORAWAN_R1"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "decoded_payload": {
                            "type": "object"
                          },
                          "f_hdr": {
                            "properties": {
                              "dev_addr": {
                                "example": "2600ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "f_cnt": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "f_ctrl": {
                                "properties": {
                                  "ack": {
                                    "type": "boolean"
                                  },
                                  "adr": {
                                    "type": "boolean"
                                  },
                                  "adr_ack_req": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "class_b": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "f_pending": {
                                    "description": "Only on downlink.",
                                    "type": "boolean"
                                  }
                                },
                                "type": "object"
                              },
                              "f_opts": {
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "frm_payload": {
                            "format": "byte",
                            "type": "string"
                          },
                          "full_f_cnt": {
                            "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "mic": {
                        "format": "byte",
                        "type": "string"
                      },
                      "rejoin_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rejoin_cnt": {
                            "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "rejoin_type": {
                            "default": "CONTEXT",
                            "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                            "enum": [
                              "CONTEXT",
                              "SESSION",
                              "KEYS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "title": "Message represents a LoRaWAN message",
                    "type": "object"
                  },
                  "received_at": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "rx_metadata": {
                    "items": {
                      "properties": {
                        "channel_rssi": {
                          "format": "float",
                          "type": "number"
                        },
                        "downlink_path_constraint": {
                          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                          "enum": [
                            "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                            "DOWNLINK_PATH_CONSTRAINT_NEVER"
                          ],
                          "type": "string"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "packet_broker": {
                          "type": "object"
                        },
                        "relay": {
                          "type": "object"
                        },
                        "snr": {
                          "format": "float",
                          "type": "number"
                        },
                        "uplink_token": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "settings": {
                    "properties": {
                      "data_rate": {
                        "properties": {
                          "fsk": {
                            "properties": {
                              "bit_rate": {
                                "description": "Bit rate (bps).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lora": {
                            "properties": {
                              "bandwidth": {
                                "description": "Bandwidth (Hz).",
                                "format": "int64",
                                "type": "integer"
                              },
                              "coding_rate": {
                                "type": "string"
                              },
                              "spreading_factor": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lrfhss": {
                            "properties": {
                              "coding_rate": {
                                "type": "string"
                              },
                              "modulation_type": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "operating_channel_width": {
                                "description": "Operating Channel Width (Hz).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "rejected_adr_data_rate_indexes": {
              "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
              "items": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "rejected_adr_tx_power_indexes": {
              "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
              "items": {
                "format": "int64",
                "type": "integer"
              },
              "type": "array"
            },
            "rejected_data_rate_ranges": {
              "additionalProperties": {
                "properties": {
                  "ranges": {
                    "items": {
                      "properties": {
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "description": "Data rate ranges rejected by the device per frequency.",
              "type": "object"
            },
            "rejected_frequencies": {
              "description": "Frequencies rejected by the device.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "rx_windows_available": {
              "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "pending_session": {
          "properties": {
            "dev_addr": {
              "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "keys": {
              "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
              "properties": {
                "app_s_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "f_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "nwk_s_enc_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "s_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "last_a_f_cnt_down": {
              "description": "Last application downlink frame counter value used. Application Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_conf_f_cnt_down": {
              "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_f_cnt_up": {
              "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
              "format": "int64",
              "type": "integer"
            },
            "last_n_f_cnt_down": {
              "description": "Last network downlink frame counter value used. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "queued_application_downlinks": {
              "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
              "items": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "started_at": {
              "description": "Time when the session started. Network Server only.",
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "picture": {
          "properties": {
            "embedded": {
              "properties": {
                "data": {
                  "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                  "format": "byte",
                  "type": "string"
                },
                "mime_type": {
                  "description": "MIME type of the picture.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "sizes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "URLs of the picture for different sizes, if available on a CDN.",
              "type": "object"
            }
          },
          "type": "object"
        },
        "power_state": {
          "default": "POWER_UNKNOWN",
          "description": "Power state of the device.",
          "enum": [
            "POWER_UNKNOWN",
            "POWER_BATTERY",
            "POWER_EXTERNAL"
          ],
          "type": "string"
        },
        "provisioner_id": {
          "description": "ID of the provisioner. Stored in Join Server.",
          "type": "string"
        },
        "provisioning_data": {
          "description": "Vendor-specific provisioning data. Stored in Join Server.",
          "type": "object"
        },
        "queued_application_downlinks": {
          "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
          "items": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "resets_join_nonces": {
          "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "root_keys": {
          "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
          "properties": {
            "app_key": {
              "properties": {
                "encrypted_key": {
                  "format": "byte",
                  "type": "string"
                },
                "kek_label": {
                  "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                  "type": "string"
                },
                "key": {
                  "description": "The unencrypted AES key.",
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "nwk_key": {
              "properties": {
                "encrypted_key": {
                  "format": "byte",
                  "type": "string"
                },
                "kek_label": {
                  "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                  "type": "string"
                },
                "key": {
                  "description": "The unencrypted AES key.",
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "root_key_id": {
              "description": "Join Server issued identifier for the root keys.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "serial_number": {
          "type": "string"
        },
        "service_profile_id": {
          "description": "Default service profile. Stored in Entity Registry.",
          "type": "string"
        },
        "session": {
          "properties": {
            "dev_addr": {
              "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "keys": {
              "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
              "properties": {
                "app_s_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "f_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "nwk_s_enc_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "s_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "last_a_f_cnt_down": {
              "description": "Last application downlink frame counter value used. Application Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_conf_f_cnt_down": {
              "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_f_cnt_up": {
              "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
              "format": "int64",
              "type": "integer"
            },
            "last_n_f_cnt_down": {
              "description": "Last network downlink frame counter value used. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "queued_application_downlinks": {
              "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
              "items": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "started_at": {
              "description": "Time when the session started. Network Server only.",
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "skip_payload_crypto": {
          "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
          "type": "boolean"
        },
        "skip_payload_crypto_override": {
          "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
          "type": "boolean"
        },
        "supports_class_b": {
          "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "supports_class_c": {
          "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "supports_join": {
          "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "used_dev_nonces": {
          "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
          "items": {
            "format": "int64",
            "type": "integer"
          },
          "type": "array"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/applications/{application_ids.application_id}/devices/{device_id}

Delete the end device with the given IDs.

Expand Collapse

Before deleting an end device it first needs to be deleted from the NsEndDeviceRegistry, the AsEndDeviceRegistry and the JsEndDeviceRegistry. In addition, if the device claimed on a Join Server, it also needs to be unclaimed via the DeviceClaimingServer so it can be claimed in the future. This is NOT done automatically.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_id string true
dev_eui string The LoRaWAN DevEUI.
join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/applications/{end_device.ids.application_ids.application_id}/devices

Create a new end device within an application.

Expand Collapse

After registering an end device, it also needs to be registered in the NsEndDeviceRegistry that is exposed by the Network Server, the AsEndDeviceRegistry that is exposed by the Application Server, and the JsEndDeviceRegistry that is exposed by the Join Server.

Request Parameters
Field Type Required Description
end_device.ids.application_ids.application_id string true
Request Body
Show JSON Schema
{
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}

Update the end device, changing the fields specified by the field mask to the provided values.

Expand Collapse

Request Parameters
Field Type Required Description
end_device.ids.application_ids.application_id string true
end_device.ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the end device fields that should be updated.\nSee the API reference for which fields can be set on the different services.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}

Get the end device with the given identifiers, selecting the fields specified in the field mask.

Expand Collapse

More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
field_mask string The names of the end device fields that should be returned. See the API reference for which fields can be returned by the different services.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EndDeviceTemplateConverter

Convert end device information between supported formats.

Expand Collapse

post

/edtc/convert

Converts the binary data to a stream of end device templates.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "data": {
    "description": "Data to convert.",
    "format": "byte",
    "type": "string"
  },
  "end_device_version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "format_id": {
    "description": "ID of the format.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.(streaming responses)
Show JSON Schema
        {
  "error": {
    "properties": {
      "code": {
        "format": "int32",
        "type": "integer"
      },
      "details": {
        "items": {
          "additionalProperties": {},
          "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
          "properties": {
            "@type": {
              "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "message": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "result": {
    "properties": {
      "end_device": {
        "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
        "properties": {
          "activated_at": {
            "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
            "format": "date-time",
            "type": "string"
          },
          "application_server_address": {
            "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
            "type": "string"
          },
          "application_server_id": {
            "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
            "type": "string"
          },
          "application_server_kek_label": {
            "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
            "type": "string"
          },
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
            "type": "object"
          },
          "battery_percentage": {
            "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
            "format": "float",
            "type": "number"
          },
          "claim_authentication_code": {
            "description": "Authentication code for end devices.",
            "properties": {
              "valid_from": {
                "format": "date-time",
                "type": "string"
              },
              "valid_to": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Description of the device. Stored in Entity Registry.",
            "type": "string"
          },
          "downlink_margin": {
            "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
            "format": "int32",
            "type": "integer"
          },
          "formatters": {
            "properties": {
              "down_formatter": {
                "default": "FORMATTER_NONE",
                "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
                "enum": [
                  "FORMATTER_NONE",
                  "FORMATTER_REPOSITORY",
                  "FORMATTER_GRPC_SERVICE",
                  "FORMATTER_JAVASCRIPT",
                  "FORMATTER_CAYENNELPP"
                ],
                "type": "string"
              },
              "down_formatter_parameter": {
                "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
                "type": "string"
              },
              "up_formatter": {
                "default": "FORMATTER_NONE",
                "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
                "enum": [
                  "FORMATTER_NONE",
                  "FORMATTER_REPOSITORY",
                  "FORMATTER_GRPC_SERVICE",
                  "FORMATTER_JAVASCRIPT",
                  "FORMATTER_CAYENNELPP"
                ],
                "type": "string"
              },
              "up_formatter_parameter": {
                "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "frequency_plan_id": {
            "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "string"
          },
          "ids": {
            "properties": {
              "application_ids": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "dev_addr": {
                "description": "The LoRaWAN DevAddr.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "dev_eui": {
                "description": "The LoRaWAN DevEUI.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "device_id": {
                "type": "string"
              },
              "join_eui": {
                "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "join_server_address": {
            "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
            "type": "string"
          },
          "label_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "last_dev_nonce": {
            "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_dev_status_received_at": {
            "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
            "format": "date-time",
            "type": "string"
          },
          "last_join_nonce": {
            "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_rj_count_0": {
            "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_rj_count_1": {
            "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_seen_at": {
            "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
            "format": "date-time",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "Location of the device. Stored in Entity Registry.",
            "type": "object"
          },
          "lora_alliance_profile_ids": {
            "properties": {
              "vendor_id": {
                "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
                "format": "int64",
                "type": "integer"
              },
              "vendor_profile_id": {
                "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "lorawan_phy_version": {
            "default": "PHY_UNKNOWN",
            "enum": [
              "PHY_UNKNOWN",
              "PHY_V1_0",
              "TS001_V1_0",
              "PHY_V1_0_1",
              "TS001_V1_0_1",
              "PHY_V1_0_2_REV_A",
              "RP001_V1_0_2",
              "PHY_V1_0_2_REV_B",
              "RP001_V1_0_2_REV_B",
              "PHY_V1_1_REV_A",
              "RP001_V1_1_REV_A",
              "PHY_V1_1_REV_B",
              "RP001_V1_1_REV_B",
              "PHY_V1_0_3_REV_A",
              "RP001_V1_0_3_REV_A",
              "RP002_V1_0_0",
              "RP002_V1_0_1",
              "RP002_V1_0_2",
              "RP002_V1_0_3",
              "RP002_V1_0_4"
            ],
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "mac_settings": {
            "properties": {
              "adr": {
                "description": "Adaptive Data Rate settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                    "type": "object"
                  },
                  "dynamic": {
                    "description": "Configuration options for dynamic ADR.",
                    "properties": {
                      "channel_steering": {
                        "description": "EXPERIMENTAL: Channel steering settings.",
                        "properties": {
                          "disabled": {
                            "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                            "type": "object"
                          },
                          "lora_narrow": {
                            "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "margin": {
                        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "float",
                        "type": "number"
                      },
                      "max_data_rate_index": {
                        "properties": {
                          "value": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_tx_power_index": {
                        "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_data_rate_index": {
                        "properties": {
                          "value": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_tx_power_index": {
                        "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "overrides": {
                        "description": "EXPERIMENTAL: Configuration overrides.",
                        "properties": {
                          "data_rate_0": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_1": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_10": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_11": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_12": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_13": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_14": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_15": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_2": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_3": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_4": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_5": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_6": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_7": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_8": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_9": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "static": {
                    "description": "Configuration options for static ADR.",
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "description": "Number of retransmissions.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "description": "Transmission power index to use.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "adr_margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
                "format": "float",
                "type": "number"
              },
              "beacon_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "class_b_c_downlink_interval": {
                "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
                "type": "string"
              },
              "class_b_timeout": {
                "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
                "type": "string"
              },
              "class_c_timeout": {
                "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
                "type": "string"
              },
              "desired_adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_beacon_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_max_duty_cycle": {
                "properties": {
                  "value": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_max_eirp": {
                "properties": {
                  "value": {
                    "default": "DEVICE_EIRP_8",
                    "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                    "enum": [
                      "DEVICE_EIRP_8",
                      "DEVICE_EIRP_10",
                      "DEVICE_EIRP_12",
                      "DEVICE_EIRP_13",
                      "DEVICE_EIRP_14",
                      "DEVICE_EIRP_16",
                      "DEVICE_EIRP_18",
                      "DEVICE_EIRP_20",
                      "DEVICE_EIRP_21",
                      "DEVICE_EIRP_24",
                      "DEVICE_EIRP_26",
                      "DEVICE_EIRP_27",
                      "DEVICE_EIRP_29",
                      "DEVICE_EIRP_30",
                      "DEVICE_EIRP_33",
                      "DEVICE_EIRP_36"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_ping_slot_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_ping_slot_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_relay": {
                "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "desired_rx1_data_rate_offset": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_rx1_delay": {
                "properties": {
                  "value": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_rx2_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_rx2_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "factory_preset_frequencies": {
                "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "max_duty_cycle": {
                "properties": {
                  "value": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_periodicity": {
                "properties": {
                  "value": {
                    "default": "PING_EVERY_1S",
                    "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                    "enum": [
                      "PING_EVERY_1S",
                      "PING_EVERY_2S",
                      "PING_EVERY_4S",
                      "PING_EVERY_8S",
                      "PING_EVERY_16S",
                      "PING_EVERY_32S",
                      "PING_EVERY_64S",
                      "PING_EVERY_128S"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "relay": {
                "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "resets_f_cnt": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx1_delay": {
                "properties": {
                  "value": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx2_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx2_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "schedule_downlinks": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "status_count_periodicity": {
                "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "status_time_periodicity": {
                "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
                "type": "string"
              },
              "supports_32_bit_f_cnt": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "use_adr": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "mac_settings_profile_ids": {
            "properties": {
              "application_ids": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "profile_id": {
                "description": "Profile ID.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "mac_state": {
            "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
            "properties": {
              "current_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "desired_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "device_class": {
                "default": "CLASS_A",
                "enum": [
                  "CLASS_A",
                  "CLASS_B",
                  "CLASS_C"
                ],
                "type": "string"
              },
              "last_adr_change_f_cnt_up": {
                "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
                "format": "int64",
                "type": "integer"
              },
              "last_confirmed_downlink_at": {
                "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_dev_status_f_cnt_up": {
                "description": "Frame counter value of last uplink containing DevStatusAns.",
                "format": "int64",
                "type": "integer"
              },
              "last_downlink_at": {
                "description": "Time when the last downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_network_initiated_downlink_at": {
                "description": "Time when the last network-initiated downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "lorawan_version": {
                "default": "MAC_UNKNOWN",
                "enum": [
                  "MAC_UNKNOWN",
                  "MAC_V1_0",
                  "MAC_V1_0_1",
                  "MAC_V1_0_2",
                  "MAC_V1_1",
                  "MAC_V1_0_3",
                  "MAC_V1_0_4"
                ],
                "type": "string"
              },
              "pending_application_downlink": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "pending_join_request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_relay_downlink": {
                "properties": {
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_requests": {
                "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "ping_slot_periodicity": {
                "properties": {
                  "value": {
                    "default": "PING_EVERY_1S",
                    "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                    "enum": [
                      "PING_EVERY_1S",
                      "PING_EVERY_2S",
                      "PING_EVERY_4S",
                      "PING_EVERY_8S",
                      "PING_EVERY_16S",
                      "PING_EVERY_32S",
                      "PING_EVERY_64S",
                      "PING_EVERY_128S"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "queued_join_accept": {
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dev_addr": {
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "keys": {
                    "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                    "properties": {
                      "app_s_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "f_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "nwk_s_enc_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "s_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "session_key_id": {
                        "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "net_id": {
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "payload": {
                    "description": "Payload of the join-accept received from Join Server.",
                    "format": "byte",
                    "type": "string"
                  },
                  "request": {
                    "properties": {
                      "cf_list": {
                        "properties": {
                          "ch_masks": {
                            "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                            "items": {
                              "type": "boolean"
                            },
                            "type": "array"
                          },
                          "freq": {
                            "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                            "items": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "type": "array"
                          },
                          "type": {
                            "default": "FREQUENCIES",
                            "enum": [
                              "FREQUENCIES",
                              "CHANNEL_MASKS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "downlink_settings": {
                        "properties": {
                          "opt_neg": {
                            "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                            "type": "boolean"
                          },
                          "rx1_dr_offset": {
                            "default": "DATA_RATE_OFFSET_0",
                            "enum": [
                              "DATA_RATE_OFFSET_0",
                              "DATA_RATE_OFFSET_1",
                              "DATA_RATE_OFFSET_2",
                              "DATA_RATE_OFFSET_3",
                              "DATA_RATE_OFFSET_4",
                              "DATA_RATE_OFFSET_5",
                              "DATA_RATE_OFFSET_6",
                              "DATA_RATE_OFFSET_7"
                            ],
                            "type": "string"
                          },
                          "rx2_dr": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "rx_delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "queued_responses": {
                "description": "Queued MAC responses.\nRegenerated on each uplink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_downlinks": {
                "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "payload": {
                      "properties": {
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "full_f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_mac_command_identifiers": {
                "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
                "items": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "type": "array"
              },
              "recent_uplinks": {
                "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "device_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "payload": {
                      "properties": {
                        "join_accept_payload": {
                          "properties": {
                            "cf_list": {
                              "properties": {
                                "ch_masks": {
                                  "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                  "items": {
                                    "type": "boolean"
                                  },
                                  "type": "array"
                                },
                                "freq": {
                                  "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                  "items": {
                                    "format": "int64",
                                    "type": "integer"
                                  },
                                  "type": "array"
                                },
                                "type": {
                                  "default": "FREQUENCIES",
                                  "enum": [
                                    "FREQUENCIES",
                                    "CHANNEL_MASKS"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dl_settings": {
                              "properties": {
                                "opt_neg": {
                                  "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                  "type": "boolean"
                                },
                                "rx1_dr_offset": {
                                  "default": "DATA_RATE_OFFSET_0",
                                  "enum": [
                                    "DATA_RATE_OFFSET_0",
                                    "DATA_RATE_OFFSET_1",
                                    "DATA_RATE_OFFSET_2",
                                    "DATA_RATE_OFFSET_3",
                                    "DATA_RATE_OFFSET_4",
                                    "DATA_RATE_OFFSET_5",
                                    "DATA_RATE_OFFSET_6",
                                    "DATA_RATE_OFFSET_7"
                                  ],
                                  "type": "string"
                                },
                                "rx2_dr": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "encrypted": {
                              "format": "byte",
                              "type": "string"
                            },
                            "join_nonce": {
                              "example": "ABCDEF",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rx_delay": {
                              "default": "RX_DELAY_0",
                              "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                              "enum": [
                                "RX_DELAY_0",
                                "RX_DELAY_1",
                                "RX_DELAY_2",
                                "RX_DELAY_3",
                                "RX_DELAY_4",
                                "RX_DELAY_5",
                                "RX_DELAY_6",
                                "RX_DELAY_7",
                                "RX_DELAY_8",
                                "RX_DELAY_9",
                                "RX_DELAY_10",
                                "RX_DELAY_11",
                                "RX_DELAY_12",
                                "RX_DELAY_13",
                                "RX_DELAY_14",
                                "RX_DELAY_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dev_nonce": {
                              "example": "ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            },
                            "major": {
                              "default": "LORAWAN_R1",
                              "enum": [
                                "LORAWAN_R1"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "decoded_payload": {
                              "type": "object"
                            },
                            "f_hdr": {
                              "properties": {
                                "dev_addr": {
                                  "example": "2600ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "f_cnt": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "f_ctrl": {
                                  "properties": {
                                    "ack": {
                                      "type": "boolean"
                                    },
                                    "adr": {
                                      "type": "boolean"
                                    },
                                    "adr_ack_req": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "class_b": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "f_pending": {
                                      "description": "Only on downlink.",
                                      "type": "boolean"
                                    }
                                  },
                                  "type": "object"
                                },
                                "f_opts": {
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "frm_payload": {
                              "format": "byte",
                              "type": "string"
                            },
                            "full_f_cnt": {
                              "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "mic": {
                          "format": "byte",
                          "type": "string"
                        },
                        "rejoin_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rejoin_cnt": {
                              "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "rejoin_type": {
                              "default": "CONTEXT",
                              "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                              "enum": [
                                "CONTEXT",
                                "SESSION",
                                "KEYS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "title": "Message represents a LoRaWAN message",
                      "type": "object"
                    },
                    "received_at": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "rx_metadata": {
                      "items": {
                        "properties": {
                          "channel_rssi": {
                            "format": "float",
                            "type": "number"
                          },
                          "downlink_path_constraint": {
                            "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                            "enum": [
                              "DOWNLINK_PATH_CONSTRAINT_NONE",
                              "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                              "DOWNLINK_PATH_CONSTRAINT_NEVER"
                            ],
                            "type": "string"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "packet_broker": {
                            "type": "object"
                          },
                          "relay": {
                            "type": "object"
                          },
                          "snr": {
                            "format": "float",
                            "type": "number"
                          },
                          "uplink_token": {
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "settings": {
                      "properties": {
                        "data_rate": {
                          "properties": {
                            "fsk": {
                              "properties": {
                                "bit_rate": {
                                  "description": "Bit rate (bps).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lora": {
                              "properties": {
                                "bandwidth": {
                                  "description": "Bandwidth (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "coding_rate": {
                                  "type": "string"
                                },
                                "spreading_factor": {
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lrfhss": {
                              "properties": {
                                "coding_rate": {
                                  "type": "string"
                                },
                                "modulation_type": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "operating_channel_width": {
                                  "description": "Operating Channel Width (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "rejected_adr_data_rate_indexes": {
                "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
                "items": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "rejected_adr_tx_power_indexes": {
                "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "rejected_data_rate_ranges": {
                "additionalProperties": {
                  "properties": {
                    "ranges": {
                      "items": {
                        "properties": {
                          "max_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "min_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "description": "Data rate ranges rejected by the device per frequency.",
                "type": "object"
              },
              "rejected_frequencies": {
                "description": "Frequencies rejected by the device.",
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "rx_windows_available": {
                "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_frequency": {
            "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "format": "uint64",
            "type": "string"
          },
          "min_frequency": {
            "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "format": "uint64",
            "type": "string"
          },
          "multicast": {
            "description": "Indicates whether this device represents a multicast group.",
            "type": "boolean"
          },
          "name": {
            "description": "Friendly name of the device. Stored in Entity Registry.",
            "type": "string"
          },
          "net_id": {
            "description": "Home NetID. Stored in Join Server.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "network_server_address": {
            "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
            "type": "string"
          },
          "network_server_kek_label": {
            "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
            "type": "string"
          },
          "pending_mac_state": {
            "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
            "properties": {
              "current_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "desired_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "device_class": {
                "default": "CLASS_A",
                "enum": [
                  "CLASS_A",
                  "CLASS_B",
                  "CLASS_C"
                ],
                "type": "string"
              },
              "last_adr_change_f_cnt_up": {
                "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
                "format": "int64",
                "type": "integer"
              },
              "last_confirmed_downlink_at": {
                "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_dev_status_f_cnt_up": {
                "description": "Frame counter value of last uplink containing DevStatusAns.",
                "format": "int64",
                "type": "integer"
              },
              "last_downlink_at": {
                "description": "Time when the last downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_network_initiated_downlink_at": {
                "description": "Time when the last network-initiated downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "lorawan_version": {
                "default": "MAC_UNKNOWN",
                "enum": [
                  "MAC_UNKNOWN",
                  "MAC_V1_0",
                  "MAC_V1_0_1",
                  "MAC_V1_0_2",
                  "MAC_V1_1",
                  "MAC_V1_0_3",
                  "MAC_V1_0_4"
                ],
                "type": "string"
              },
              "pending_application_downlink": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "pending_join_request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_relay_downlink": {
                "properties": {
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_requests": {
                "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "ping_slot_periodicity": {
                "properties": {
                  "value": {
                    "default": "PING_EVERY_1S",
                    "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                    "enum": [
                      "PING_EVERY_1S",
                      "PING_EVERY_2S",
                      "PING_EVERY_4S",
                      "PING_EVERY_8S",
                      "PING_EVERY_16S",
                      "PING_EVERY_32S",
                      "PING_EVERY_64S",
                      "PING_EVERY_128S"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "queued_join_accept": {
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dev_addr": {
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "keys": {
                    "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                    "properties": {
                      "app_s_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "f_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "nwk_s_enc_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "s_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "session_key_id": {
                        "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "net_id": {
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "payload": {
                    "description": "Payload of the join-accept received from Join Server.",
                    "format": "byte",
                    "type": "string"
                  },
                  "request": {
                    "properties": {
                      "cf_list": {
                        "properties": {
                          "ch_masks": {
                            "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                            "items": {
                              "type": "boolean"
                            },
                            "type": "array"
                          },
                          "freq": {
                            "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                            "items": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "type": "array"
                          },
                          "type": {
                            "default": "FREQUENCIES",
                            "enum": [
                              "FREQUENCIES",
                              "CHANNEL_MASKS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "downlink_settings": {
                        "properties": {
                          "opt_neg": {
                            "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                            "type": "boolean"
                          },
                          "rx1_dr_offset": {
                            "default": "DATA_RATE_OFFSET_0",
                            "enum": [
                              "DATA_RATE_OFFSET_0",
                              "DATA_RATE_OFFSET_1",
                              "DATA_RATE_OFFSET_2",
                              "DATA_RATE_OFFSET_3",
                              "DATA_RATE_OFFSET_4",
                              "DATA_RATE_OFFSET_5",
                              "DATA_RATE_OFFSET_6",
                              "DATA_RATE_OFFSET_7"
                            ],
                            "type": "string"
                          },
                          "rx2_dr": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "rx_delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "queued_responses": {
                "description": "Queued MAC responses.\nRegenerated on each uplink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_downlinks": {
                "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "payload": {
                      "properties": {
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "full_f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_mac_command_identifiers": {
                "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
                "items": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "type": "array"
              },
              "recent_uplinks": {
                "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "device_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "payload": {
                      "properties": {
                        "join_accept_payload": {
                          "properties": {
                            "cf_list": {
                              "properties": {
                                "ch_masks": {
                                  "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                  "items": {
                                    "type": "boolean"
                                  },
                                  "type": "array"
                                },
                                "freq": {
                                  "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                  "items": {
                                    "format": "int64",
                                    "type": "integer"
                                  },
                                  "type": "array"
                                },
                                "type": {
                                  "default": "FREQUENCIES",
                                  "enum": [
                                    "FREQUENCIES",
                                    "CHANNEL_MASKS"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dl_settings": {
                              "properties": {
                                "opt_neg": {
                                  "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                  "type": "boolean"
                                },
                                "rx1_dr_offset": {
                                  "default": "DATA_RATE_OFFSET_0",
                                  "enum": [
                                    "DATA_RATE_OFFSET_0",
                                    "DATA_RATE_OFFSET_1",
                                    "DATA_RATE_OFFSET_2",
                                    "DATA_RATE_OFFSET_3",
                                    "DATA_RATE_OFFSET_4",
                                    "DATA_RATE_OFFSET_5",
                                    "DATA_RATE_OFFSET_6",
                                    "DATA_RATE_OFFSET_7"
                                  ],
                                  "type": "string"
                                },
                                "rx2_dr": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "encrypted": {
                              "format": "byte",
                              "type": "string"
                            },
                            "join_nonce": {
                              "example": "ABCDEF",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rx_delay": {
                              "default": "RX_DELAY_0",
                              "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                              "enum": [
                                "RX_DELAY_0",
                                "RX_DELAY_1",
                                "RX_DELAY_2",
                                "RX_DELAY_3",
                                "RX_DELAY_4",
                                "RX_DELAY_5",
                                "RX_DELAY_6",
                                "RX_DELAY_7",
                                "RX_DELAY_8",
                                "RX_DELAY_9",
                                "RX_DELAY_10",
                                "RX_DELAY_11",
                                "RX_DELAY_12",
                                "RX_DELAY_13",
                                "RX_DELAY_14",
                                "RX_DELAY_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dev_nonce": {
                              "example": "ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            },
                            "major": {
                              "default": "LORAWAN_R1",
                              "enum": [
                                "LORAWAN_R1"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "decoded_payload": {
                              "type": "object"
                            },
                            "f_hdr": {
                              "properties": {
                                "dev_addr": {
                                  "example": "2600ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "f_cnt": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "f_ctrl": {
                                  "properties": {
                                    "ack": {
                                      "type": "boolean"
                                    },
                                    "adr": {
                                      "type": "boolean"
                                    },
                                    "adr_ack_req": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "class_b": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "f_pending": {
                                      "description": "Only on downlink.",
                                      "type": "boolean"
                                    }
                                  },
                                  "type": "object"
                                },
                                "f_opts": {
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "frm_payload": {
                              "format": "byte",
                              "type": "string"
                            },
                            "full_f_cnt": {
                              "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "mic": {
                          "format": "byte",
                          "type": "string"
                        },
                        "rejoin_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rejoin_cnt": {
                              "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "rejoin_type": {
                              "default": "CONTEXT",
                              "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                              "enum": [
                                "CONTEXT",
                                "SESSION",
                                "KEYS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "title": "Message represents a LoRaWAN message",
                      "type": "object"
                    },
                    "received_at": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "rx_metadata": {
                      "items": {
                        "properties": {
                          "channel_rssi": {
                            "format": "float",
                            "type": "number"
                          },
                          "downlink_path_constraint": {
                            "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                            "enum": [
                              "DOWNLINK_PATH_CONSTRAINT_NONE",
                              "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                              "DOWNLINK_PATH_CONSTRAINT_NEVER"
                            ],
                            "type": "string"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "packet_broker": {
                            "type": "object"
                          },
                          "relay": {
                            "type": "object"
                          },
                          "snr": {
                            "format": "float",
                            "type": "number"
                          },
                          "uplink_token": {
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "settings": {
                      "properties": {
                        "data_rate": {
                          "properties": {
                            "fsk": {
                              "properties": {
                                "bit_rate": {
                                  "description": "Bit rate (bps).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lora": {
                              "properties": {
                                "bandwidth": {
                                  "description": "Bandwidth (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "coding_rate": {
                                  "type": "string"
                                },
                                "spreading_factor": {
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lrfhss": {
                              "properties": {
                                "coding_rate": {
                                  "type": "string"
                                },
                                "modulation_type": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "operating_channel_width": {
                                  "description": "Operating Channel Width (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "rejected_adr_data_rate_indexes": {
                "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
                "items": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "rejected_adr_tx_power_indexes": {
                "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "rejected_data_rate_ranges": {
                "additionalProperties": {
                  "properties": {
                    "ranges": {
                      "items": {
                        "properties": {
                          "max_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "min_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "description": "Data rate ranges rejected by the device per frequency.",
                "type": "object"
              },
              "rejected_frequencies": {
                "description": "Frequencies rejected by the device.",
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "rx_windows_available": {
                "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "pending_session": {
            "properties": {
              "dev_addr": {
                "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "last_a_f_cnt_down": {
                "description": "Last application downlink frame counter value used. Application Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_conf_f_cnt_down": {
                "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_f_cnt_up": {
                "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
                "format": "int64",
                "type": "integer"
              },
              "last_n_f_cnt_down": {
                "description": "Last network downlink frame counter value used. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "queued_application_downlinks": {
                "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
                "items": {
                  "properties": {
                    "attributes": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Attributes for devices, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "class_b_c": {
                      "properties": {
                        "absolute_time": {
                          "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                          "format": "date-time",
                          "type": "string"
                        },
                        "gateways": {
                          "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                          "items": {
                            "properties": {
                              "antenna_index": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "gateway_ids": {
                                "properties": {
                                  "eui": {
                                    "description": "Secondary identifier, which can only be used in specific requests.",
                                    "example": "70B3D57ED000ABCD",
                                    "format": "string",
                                    "type": "string"
                                  },
                                  "gateway_id": {
                                    "type": "string"
                                  }
                                },
                                "type": "object"
                              },
                              "group_index": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    },
                    "confirmed": {
                      "type": "boolean"
                    },
                    "confirmed_retry": {
                      "properties": {
                        "attempt": {
                          "description": "The number of attempted confirmed downlink acknowledgements.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "max_attempts": {
                          "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "decoded_payload": {
                      "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                      "type": "object"
                    },
                    "decoded_payload_warnings": {
                      "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                      "format": "byte",
                      "type": "string"
                    },
                    "locations": {
                      "additionalProperties": {
                        "properties": {
                          "accuracy": {
                            "description": "The accuracy of the location (meters).",
                            "format": "int32",
                            "type": "integer"
                          },
                          "altitude": {
                            "description": "The altitude (meters), where 0 is the mean sea level.",
                            "format": "int32",
                            "type": "integer"
                          },
                          "latitude": {
                            "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "longitude": {
                            "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "source": {
                            "default": "SOURCE_UNKNOWN",
                            "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                            "enum": [
                              "SOURCE_UNKNOWN",
                              "SOURCE_GPS",
                              "SOURCE_REGISTRY",
                              "SOURCE_IP_GEOLOCATION",
                              "SOURCE_WIFI_RSSI_GEOLOCATION",
                              "SOURCE_BT_RSSI_GEOLOCATION",
                              "SOURCE_LORA_RSSI_GEOLOCATION",
                              "SOURCE_LORA_TDOA_GEOLOCATION",
                              "SOURCE_COMBINED_GEOLOCATION"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "description": "End device location metadata, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "network_ids": {
                      "description": "Identifies a Network Server.",
                      "properties": {
                        "cluster_address": {
                          "description": "Cluster address of the Network Server.",
                          "type": "string"
                        },
                        "cluster_id": {
                          "description": "Cluster identifier of the Network Server.",
                          "type": "string"
                        },
                        "net_id": {
                          "description": "LoRa Alliance NetID.",
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "ns_id": {
                          "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "tenant_address": {
                          "description": "Optional tenant address for multi-tenant deployments.",
                          "type": "string"
                        },
                        "tenant_id": {
                          "description": "Optional tenant identifier for multi-tenant deployments.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "priority": {
                      "default": "LOWEST",
                      "enum": [
                        "LOWEST",
                        "LOW",
                        "BELOW_NORMAL",
                        "NORMAL",
                        "ABOVE_NORMAL",
                        "HIGH",
                        "HIGHEST"
                      ],
                      "type": "string"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys used by this downlink.",
                      "format": "byte",
                      "type": "string"
                    },
                    "version_ids": {
                      "description": "Identifies an end device model with version information.",
                      "properties": {
                        "band_id": {
                          "type": "string"
                        },
                        "brand_id": {
                          "type": "string"
                        },
                        "firmware_version": {
                          "type": "string"
                        },
                        "hardware_version": {
                          "type": "string"
                        },
                        "model_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "started_at": {
                "description": "Time when the session started. Network Server only.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object"
          },
          "picture": {
            "properties": {
              "embedded": {
                "properties": {
                  "data": {
                    "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                    "format": "byte",
                    "type": "string"
                  },
                  "mime_type": {
                    "description": "MIME type of the picture.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "sizes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "URLs of the picture for different sizes, if available on a CDN.",
                "type": "object"
              }
            },
            "type": "object"
          },
          "power_state": {
            "default": "POWER_UNKNOWN",
            "description": "Power state of the device.",
            "enum": [
              "POWER_UNKNOWN",
              "POWER_BATTERY",
              "POWER_EXTERNAL"
            ],
            "type": "string"
          },
          "provisioner_id": {
            "description": "ID of the provisioner. Stored in Join Server.",
            "type": "string"
          },
          "provisioning_data": {
            "description": "Vendor-specific provisioning data. Stored in Join Server.",
            "type": "object"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "resets_join_nonces": {
            "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "root_keys": {
            "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
            "properties": {
              "app_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "root_key_id": {
                "description": "Join Server issued identifier for the root keys.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serial_number": {
            "type": "string"
          },
          "service_profile_id": {
            "description": "Default service profile. Stored in Entity Registry.",
            "type": "string"
          },
          "session": {
            "properties": {
              "dev_addr": {
                "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "last_a_f_cnt_down": {
                "description": "Last application downlink frame counter value used. Application Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_conf_f_cnt_down": {
                "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_f_cnt_up": {
                "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
                "format": "int64",
                "type": "integer"
              },
              "last_n_f_cnt_down": {
                "description": "Last network downlink frame counter value used. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "queued_application_downlinks": {
                "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
                "items": {
                  "properties": {
                    "attributes": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Attributes for devices, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "class_b_c": {
                      "properties": {
                        "absolute_time": {
                          "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                          "format": "date-time",
                          "type": "string"
                        },
                        "gateways": {
                          "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                          "items": {
                            "properties": {
                              "antenna_index": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "gateway_ids": {
                                "properties": {
                                  "eui": {
                                    "description": "Secondary identifier, which can only be used in specific requests.",
                                    "example": "70B3D57ED000ABCD",
                                    "format": "string",
                                    "type": "string"
                                  },
                                  "gateway_id": {
                                    "type": "string"
                                  }
                                },
                                "type": "object"
                              },
                              "group_index": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    },
                    "confirmed": {
                      "type": "boolean"
                    },
                    "confirmed_retry": {
                      "properties": {
                        "attempt": {
                          "description": "The number of attempted confirmed downlink acknowledgements.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "max_attempts": {
                          "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "decoded_payload": {
                      "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                      "type": "object"
                    },
                    "decoded_payload_warnings": {
                      "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                      "format": "byte",
                      "type": "string"
                    },
                    "locations": {
                      "additionalProperties": {
                        "properties": {
                          "accuracy": {
                            "description": "The accuracy of the location (meters).",
                            "format": "int32",
                            "type": "integer"
                          },
                          "altitude": {
                            "description": "The altitude (meters), where 0 is the mean sea level.",
                            "format": "int32",
                            "type": "integer"
                          },
                          "latitude": {
                            "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "longitude": {
                            "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "source": {
                            "default": "SOURCE_UNKNOWN",
                            "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                            "enum": [
                              "SOURCE_UNKNOWN",
                              "SOURCE_GPS",
                              "SOURCE_REGISTRY",
                              "SOURCE_IP_GEOLOCATION",
                              "SOURCE_WIFI_RSSI_GEOLOCATION",
                              "SOURCE_BT_RSSI_GEOLOCATION",
                              "SOURCE_LORA_RSSI_GEOLOCATION",
                              "SOURCE_LORA_TDOA_GEOLOCATION",
                              "SOURCE_COMBINED_GEOLOCATION"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "description": "End device location metadata, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "network_ids": {
                      "description": "Identifies a Network Server.",
                      "properties": {
                        "cluster_address": {
                          "description": "Cluster address of the Network Server.",
                          "type": "string"
                        },
                        "cluster_id": {
                          "description": "Cluster identifier of the Network Server.",
                          "type": "string"
                        },
                        "net_id": {
                          "description": "LoRa Alliance NetID.",
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "ns_id": {
                          "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "tenant_address": {
                          "description": "Optional tenant address for multi-tenant deployments.",
                          "type": "string"
                        },
                        "tenant_id": {
                          "description": "Optional tenant identifier for multi-tenant deployments.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "priority": {
                      "default": "LOWEST",
                      "enum": [
                        "LOWEST",
                        "LOW",
                        "BELOW_NORMAL",
                        "NORMAL",
                        "ABOVE_NORMAL",
                        "HIGH",
                        "HIGHEST"
                      ],
                      "type": "string"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys used by this downlink.",
                      "format": "byte",
                      "type": "string"
                    },
                    "version_ids": {
                      "description": "Identifies an end device model with version information.",
                      "properties": {
                        "band_id": {
                          "type": "string"
                        },
                        "brand_id": {
                          "type": "string"
                        },
                        "firmware_version": {
                          "type": "string"
                        },
                        "hardware_version": {
                          "type": "string"
                        },
                        "model_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "started_at": {
                "description": "Time when the session started. Network Server only.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object"
          },
          "skip_payload_crypto": {
            "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
            "type": "boolean"
          },
          "skip_payload_crypto_override": {
            "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
            "type": "boolean"
          },
          "supports_class_b": {
            "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "supports_class_c": {
            "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "supports_join": {
            "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "used_dev_nonces": {
            "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "field_mask": {
        "type": "string"
      },
      "mapping_key": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/edtc/formats

Returns the configured formats to convert from.

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "formats": {
    "additionalProperties": {
      "properties": {
        "description": {
          "type": "string"
        },
        "file_extensions": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EndDeviceBatchRegistry

Manage end devices on The Things Stack Identity Server in batches.

Expand Collapse

delete

/applications/{application_ids.application_id}/devices/batch

Delete a batch of end devices with the given IDs.

Expand Collapse

This operation is atomic; either all devices are deleted or none. Devices not found are skipped and no error is returned. Before calling this RPC, use the corresponding BatchDelete RPCs of NsEndDeviceRegistry, AsEndDeviceRegistry and optionally the JsEndDeviceRegistry to delete the end devices. If the devices were claimed on a Join Server, use the BatchUnclaim RPC of the DeviceClaimingServer. This is NOT done automatically.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_ids array
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/applications/{application_ids.application_id}/devices/batch

Get a batch of end devices with the given identifiers, selecting the fields specified in the field mask.

Expand Collapse

More or less fields may be returned, depending on the rights of the caller. Devices not found are skipped and no error is returned.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_ids array
field_mask string The names of the end device fields that should be returned. This mask is applied on all the end devices in the result. See the API reference for which fields can be returned by the different services.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_devices": {
    "items": {
      "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
      "properties": {
        "activated_at": {
          "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
          "format": "date-time",
          "type": "string"
        },
        "application_server_address": {
          "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "application_server_id": {
          "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
          "type": "string"
        },
        "application_server_kek_label": {
          "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
          "type": "object"
        },
        "battery_percentage": {
          "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
          "format": "float",
          "type": "number"
        },
        "claim_authentication_code": {
          "description": "Authentication code for end devices.",
          "properties": {
            "valid_from": {
              "format": "date-time",
              "type": "string"
            },
            "valid_to": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "Description of the device. Stored in Entity Registry.",
          "type": "string"
        },
        "downlink_margin": {
          "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
          "format": "int32",
          "type": "integer"
        },
        "formatters": {
          "properties": {
            "down_formatter": {
              "default": "FORMATTER_NONE",
              "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
              "enum": [
                "FORMATTER_NONE",
                "FORMATTER_REPOSITORY",
                "FORMATTER_GRPC_SERVICE",
                "FORMATTER_JAVASCRIPT",
                "FORMATTER_CAYENNELPP"
              ],
              "type": "string"
            },
            "down_formatter_parameter": {
              "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
              "type": "string"
            },
            "up_formatter": {
              "default": "FORMATTER_NONE",
              "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
              "enum": [
                "FORMATTER_NONE",
                "FORMATTER_REPOSITORY",
                "FORMATTER_GRPC_SERVICE",
                "FORMATTER_JAVASCRIPT",
                "FORMATTER_CAYENNELPP"
              ],
              "type": "string"
            },
            "up_formatter_parameter": {
              "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "frequency_plan_id": {
          "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_server_address": {
          "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "last_dev_nonce": {
          "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_dev_status_received_at": {
          "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
          "format": "date-time",
          "type": "string"
        },
        "last_join_nonce": {
          "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_rj_count_0": {
          "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_rj_count_1": {
          "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_seen_at": {
          "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
          "format": "date-time",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "Location of the device. Stored in Entity Registry.",
          "type": "object"
        },
        "lora_alliance_profile_ids": {
          "properties": {
            "vendor_id": {
              "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
              "format": "int64",
              "type": "integer"
            },
            "vendor_profile_id": {
              "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "lorawan_phy_version": {
          "default": "PHY_UNKNOWN",
          "enum": [
            "PHY_UNKNOWN",
            "PHY_V1_0",
            "TS001_V1_0",
            "PHY_V1_0_1",
            "TS001_V1_0_1",
            "PHY_V1_0_2_REV_A",
            "RP001_V1_0_2",
            "PHY_V1_0_2_REV_B",
            "RP001_V1_0_2_REV_B",
            "PHY_V1_1_REV_A",
            "RP001_V1_1_REV_A",
            "PHY_V1_1_REV_B",
            "RP001_V1_1_REV_B",
            "PHY_V1_0_3_REV_A",
            "RP001_V1_0_3_REV_A",
            "RP002_V1_0_0",
            "RP002_V1_0_1",
            "RP002_V1_0_2",
            "RP002_V1_0_3",
            "RP002_V1_0_4"
          ],
          "type": "string"
        },
        "lorawan_version": {
          "default": "MAC_UNKNOWN",
          "enum": [
            "MAC_UNKNOWN",
            "MAC_V1_0",
            "MAC_V1_0_1",
            "MAC_V1_0_2",
            "MAC_V1_1",
            "MAC_V1_0_3",
            "MAC_V1_0_4"
          ],
          "type": "string"
        },
        "mac_settings": {
          "properties": {
            "adr": {
              "description": "Adaptive Data Rate settings.",
              "properties": {
                "disabled": {
                  "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                  "type": "object"
                },
                "dynamic": {
                  "description": "Configuration options for dynamic ADR.",
                  "properties": {
                    "channel_steering": {
                      "description": "EXPERIMENTAL: Channel steering settings.",
                      "properties": {
                        "disabled": {
                          "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                          "type": "object"
                        },
                        "lora_narrow": {
                          "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "margin": {
                      "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "float",
                      "type": "number"
                    },
                    "max_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "max_nb_trans": {
                      "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_tx_power_index": {
                      "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "min_nb_trans": {
                      "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_tx_power_index": {
                      "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "overrides": {
                      "description": "EXPERIMENTAL: Configuration overrides.",
                      "properties": {
                        "data_rate_0": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_1": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_10": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_11": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_12": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_13": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_14": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_15": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_2": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_3": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_4": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_5": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_6": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_7": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_8": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_9": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "static": {
                  "description": "Configuration options for static ADR.",
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "description": "Number of retransmissions.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "description": "Transmission power index to use.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "adr_margin": {
              "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
              "format": "float",
              "type": "number"
            },
            "beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "class_b_c_downlink_interval": {
              "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
              "type": "string"
            },
            "class_b_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "class_c_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "desired_adr_ack_delay_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_adr_ack_limit_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_eirp": {
              "properties": {
                "value": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "downlink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "factory_preset_frequencies": {
              "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "resets_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "schedule_downlinks": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "status_count_periodicity": {
              "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "format": "int64",
              "type": "integer"
            },
            "status_time_periodicity": {
              "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "supports_32_bit_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "uplink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "use_adr": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "mac_settings_profile_ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "profile_id": {
              "description": "Profile ID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "mac_state": {
          "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
          "properties": {
            "current_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "device_class": {
              "default": "CLASS_A",
              "enum": [
                "CLASS_A",
                "CLASS_B",
                "CLASS_C"
              ],
              "type": "string"
            },
            "last_adr_change_f_cnt_up": {
              "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
              "format": "int64",
              "type": "integer"
            },
            "last_confirmed_downlink_at": {
              "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_dev_status_f_cnt_up": {
              "description": "Frame counter value of last uplink containing DevStatusAns.",
              "format": "int64",
              "type": "integer"
            },
            "last_downlink_at": {
              "description": "Time when the last downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_network_initiated_downlink_at": {
              "description": "Time when the last network-initiated downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "lorawan_version": {
              "default": "MAC_UNKNOWN",
              "enum": [
                "MAC_UNKNOWN",
                "MAC_V1_0",
                "MAC_V1_0_1",
                "MAC_V1_0_2",
                "MAC_V1_1",
                "MAC_V1_0_3",
                "MAC_V1_0_4"
              ],
              "type": "string"
            },
            "pending_application_downlink": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pending_join_request": {
              "properties": {
                "cf_list": {
                  "properties": {
                    "ch_masks": {
                      "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "freq": {
                      "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                      "items": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "type": {
                      "default": "FREQUENCIES",
                      "enum": [
                        "FREQUENCIES",
                        "CHANNEL_MASKS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "downlink_settings": {
                  "properties": {
                    "opt_neg": {
                      "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                      "type": "boolean"
                    },
                    "rx1_dr_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_dr": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_relay_downlink": {
              "properties": {
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_requests": {
              "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "queued_join_accept": {
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "keys": {
                  "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                  "properties": {
                    "app_s_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "nwk_s_enc_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "s_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "payload": {
                  "description": "Payload of the join-accept received from Join Server.",
                  "format": "byte",
                  "type": "string"
                },
                "request": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "downlink_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "queued_responses": {
              "description": "Queued MAC responses.\nRegenerated on each uplink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_downlinks": {
              "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "payload": {
                    "properties": {
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "full_f_cnt": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_mac_command_identifiers": {
              "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
              "items": {
                "default": "CID_RFU_0",
                "enum": [
                  "CID_RFU_0",
                  "CID_RESET",
                  "CID_LINK_CHECK",
                  "CID_LINK_ADR",
                  "CID_DUTY_CYCLE",
                  "CID_RX_PARAM_SETUP",
                  "CID_DEV_STATUS",
                  "CID_NEW_CHANNEL",
                  "CID_RX_TIMING_SETUP",
                  "CID_TX_PARAM_SETUP",
                  "CID_DL_CHANNEL",
                  "CID_REKEY",
                  "CID_ADR_PARAM_SETUP",
                  "CID_DEVICE_TIME",
                  "CID_FORCE_REJOIN",
                  "CID_REJOIN_PARAM_SETUP",
                  "CID_PING_SLOT_INFO",
                  "CID_PING_SLOT_CHANNEL",
                  "CID_BEACON_TIMING",
                  "CID_BEACON_FREQ",
                  "CID_DEVICE_MODE",
                  "CID_RELAY_CONF",
                  "CID_RELAY_END_DEVICE_CONF",
                  "CID_RELAY_FILTER_LIST",
                  "CID_RELAY_UPDATE_UPLINK_LIST",
                  "CID_RELAY_CTRL_UPLINK_LIST",
                  "CID_RELAY_CONFIGURE_FWD_LIMIT",
                  "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                ],
                "title": "- CID_BEACON_TIMING: Deprecated",
                "type": "string"
              },
              "type": "array"
            },
            "recent_uplinks": {
              "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "device_channel_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "payload": {
                    "properties": {
                      "join_accept_payload": {
                        "properties": {
                          "cf_list": {
                            "properties": {
                              "ch_masks": {
                                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                "items": {
                                  "type": "boolean"
                                },
                                "type": "array"
                              },
                              "freq": {
                                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                "items": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "type": "array"
                              },
                              "type": {
                                "default": "FREQUENCIES",
                                "enum": [
                                  "FREQUENCIES",
                                  "CHANNEL_MASKS"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "dev_addr": {
                            "example": "2600ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dl_settings": {
                            "properties": {
                              "opt_neg": {
                                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                "type": "boolean"
                              },
                              "rx1_dr_offset": {
                                "default": "DATA_RATE_OFFSET_0",
                                "enum": [
                                  "DATA_RATE_OFFSET_0",
                                  "DATA_RATE_OFFSET_1",
                                  "DATA_RATE_OFFSET_2",
                                  "DATA_RATE_OFFSET_3",
                                  "DATA_RATE_OFFSET_4",
                                  "DATA_RATE_OFFSET_5",
                                  "DATA_RATE_OFFSET_6",
                                  "DATA_RATE_OFFSET_7"
                                ],
                                "type": "string"
                              },
                              "rx2_dr": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "encrypted": {
                            "format": "byte",
                            "type": "string"
                          },
                          "join_nonce": {
                            "example": "ABCDEF",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rx_delay": {
                            "default": "RX_DELAY_0",
                            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                            "enum": [
                              "RX_DELAY_0",
                              "RX_DELAY_1",
                              "RX_DELAY_2",
                              "RX_DELAY_3",
                              "RX_DELAY_4",
                              "RX_DELAY_5",
                              "RX_DELAY_6",
                              "RX_DELAY_7",
                              "RX_DELAY_8",
                              "RX_DELAY_9",
                              "RX_DELAY_10",
                              "RX_DELAY_11",
                              "RX_DELAY_12",
                              "RX_DELAY_13",
                              "RX_DELAY_14",
                              "RX_DELAY_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dev_nonce": {
                            "example": "ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          },
                          "major": {
                            "default": "LORAWAN_R1",
                            "enum": [
                              "LORAWAN_R1"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "decoded_payload": {
                            "type": "object"
                          },
                          "f_hdr": {
                            "properties": {
                              "dev_addr": {
                                "example": "2600ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "f_cnt": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "f_ctrl": {
                                "properties": {
                                  "ack": {
                                    "type": "boolean"
                                  },
                                  "adr": {
                                    "type": "boolean"
                                  },
                                  "adr_ack_req": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "class_b": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "f_pending": {
                                    "description": "Only on downlink.",
                                    "type": "boolean"
                                  }
                                },
                                "type": "object"
                              },
                              "f_opts": {
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "frm_payload": {
                            "format": "byte",
                            "type": "string"
                          },
                          "full_f_cnt": {
                            "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "mic": {
                        "format": "byte",
                        "type": "string"
                      },
                      "rejoin_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rejoin_cnt": {
                            "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "rejoin_type": {
                            "default": "CONTEXT",
                            "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                            "enum": [
                              "CONTEXT",
                              "SESSION",
                              "KEYS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "title": "Message represents a LoRaWAN message",
                    "type": "object"
                  },
                  "received_at": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "rx_metadata": {
                    "items": {
                      "properties": {
                        "channel_rssi": {
                          "format": "float",
                          "type": "number"
                        },
                        "downlink_path_constraint": {
                          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                          "enum": [
                            "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                            "DOWNLINK_PATH_CONSTRAINT_NEVER"
                          ],
                          "type": "string"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "packet_broker": {
                          "type": "object"
                        },
                        "relay": {
                          "type": "object"
                        },
                        "snr": {
                          "format": "float",
                          "type": "number"
                        },
                        "uplink_token": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "settings": {
                    "properties": {
                      "data_rate": {
                        "properties": {
                          "fsk": {
                            "properties": {
                              "bit_rate": {
                                "description": "Bit rate (bps).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lora": {
                            "properties": {
                              "bandwidth": {
                                "description": "Bandwidth (Hz).",
                                "format": "int64",
                                "type": "integer"
                              },
                              "coding_rate": {
                                "type": "string"
                              },
                              "spreading_factor": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lrfhss": {
                            "properties": {
                              "coding_rate": {
                                "type": "string"
                              },
                              "modulation_type": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "operating_channel_width": {
                                "description": "Operating Channel Width (Hz).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "rejected_adr_data_rate_indexes": {
              "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
              "items": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "rejected_adr_tx_power_indexes": {
              "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
              "items": {
                "format": "int64",
                "type": "integer"
              },
              "type": "array"
            },
            "rejected_data_rate_ranges": {
              "additionalProperties": {
                "properties": {
                  "ranges": {
                    "items": {
                      "properties": {
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "description": "Data rate ranges rejected by the device per frequency.",
              "type": "object"
            },
            "rejected_frequencies": {
              "description": "Frequencies rejected by the device.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "rx_windows_available": {
              "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "max_frequency": {
          "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "format": "uint64",
          "type": "string"
        },
        "min_frequency": {
          "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "format": "uint64",
          "type": "string"
        },
        "multicast": {
          "description": "Indicates whether this device represents a multicast group.",
          "type": "boolean"
        },
        "name": {
          "description": "Friendly name of the device. Stored in Entity Registry.",
          "type": "string"
        },
        "net_id": {
          "description": "Home NetID. Stored in Join Server.",
          "example": "000013",
          "format": "string",
          "type": "string"
        },
        "network_server_address": {
          "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "network_server_kek_label": {
          "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
          "type": "string"
        },
        "pending_mac_state": {
          "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
          "properties": {
            "current_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "device_class": {
              "default": "CLASS_A",
              "enum": [
                "CLASS_A",
                "CLASS_B",
                "CLASS_C"
              ],
              "type": "string"
            },
            "last_adr_change_f_cnt_up": {
              "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
              "format": "int64",
              "type": "integer"
            },
            "last_confirmed_downlink_at": {
              "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_dev_status_f_cnt_up": {
              "description": "Frame counter value of last uplink containing DevStatusAns.",
              "format": "int64",
              "type": "integer"
            },
            "last_downlink_at": {
              "description": "Time when the last downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_network_initiated_downlink_at": {
              "description": "Time when the last network-initiated downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "lorawan_version": {
              "default": "MAC_UNKNOWN",
              "enum": [
                "MAC_UNKNOWN",
                "MAC_V1_0",
                "MAC_V1_0_1",
                "MAC_V1_0_2",
                "MAC_V1_1",
                "MAC_V1_0_3",
                "MAC_V1_0_4"
              ],
              "type": "string"
            },
            "pending_application_downlink": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pending_join_request": {
              "properties": {
                "cf_list": {
                  "properties": {
                    "ch_masks": {
                      "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "freq": {
                      "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                      "items": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "type": {
                      "default": "FREQUENCIES",
                      "enum": [
                        "FREQUENCIES",
                        "CHANNEL_MASKS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "downlink_settings": {
                  "properties": {
                    "opt_neg": {
                      "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                      "type": "boolean"
                    },
                    "rx1_dr_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_dr": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_relay_downlink": {
              "properties": {
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_requests": {
              "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "queued_join_accept": {
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "keys": {
                  "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                  "properties": {
                    "app_s_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "nwk_s_enc_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "s_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "payload": {
                  "description": "Payload of the join-accept received from Join Server.",
                  "format": "byte",
                  "type": "string"
                },
                "request": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "downlink_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "queued_responses": {
              "description": "Queued MAC responses.\nRegenerated on each uplink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_downlinks": {
              "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "payload": {
                    "properties": {
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "full_f_cnt": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_mac_command_identifiers": {
              "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
              "items": {
                "default": "CID_RFU_0",
                "enum": [
                  "CID_RFU_0",
                  "CID_RESET",
                  "CID_LINK_CHECK",
                  "CID_LINK_ADR",
                  "CID_DUTY_CYCLE",
                  "CID_RX_PARAM_SETUP",
                  "CID_DEV_STATUS",
                  "CID_NEW_CHANNEL",
                  "CID_RX_TIMING_SETUP",
                  "CID_TX_PARAM_SETUP",
                  "CID_DL_CHANNEL",
                  "CID_REKEY",
                  "CID_ADR_PARAM_SETUP",
                  "CID_DEVICE_TIME",
                  "CID_FORCE_REJOIN",
                  "CID_REJOIN_PARAM_SETUP",
                  "CID_PING_SLOT_INFO",
                  "CID_PING_SLOT_CHANNEL",
                  "CID_BEACON_TIMING",
                  "CID_BEACON_FREQ",
                  "CID_DEVICE_MODE",
                  "CID_RELAY_CONF",
                  "CID_RELAY_END_DEVICE_CONF",
                  "CID_RELAY_FILTER_LIST",
                  "CID_RELAY_UPDATE_UPLINK_LIST",
                  "CID_RELAY_CTRL_UPLINK_LIST",
                  "CID_RELAY_CONFIGURE_FWD_LIMIT",
                  "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                ],
                "title": "- CID_BEACON_TIMING: Deprecated",
                "type": "string"
              },
              "type": "array"
            },
            "recent_uplinks": {
              "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "device_channel_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "payload": {
                    "properties": {
                      "join_accept_payload": {
                        "properties": {
                          "cf_list": {
                            "properties": {
                              "ch_masks": {
                                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                "items": {
                                  "type": "boolean"
                                },
                                "type": "array"
                              },
                              "freq": {
                                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                "items": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "type": "array"
                              },
                              "type": {
                                "default": "FREQUENCIES",
                                "enum": [
                                  "FREQUENCIES",
                                  "CHANNEL_MASKS"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "dev_addr": {
                            "example": "2600ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dl_settings": {
                            "properties": {
                              "opt_neg": {
                                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                "type": "boolean"
                              },
                              "rx1_dr_offset": {
                                "default": "DATA_RATE_OFFSET_0",
                                "enum": [
                                  "DATA_RATE_OFFSET_0",
                                  "DATA_RATE_OFFSET_1",
                                  "DATA_RATE_OFFSET_2",
                                  "DATA_RATE_OFFSET_3",
                                  "DATA_RATE_OFFSET_4",
                                  "DATA_RATE_OFFSET_5",
                                  "DATA_RATE_OFFSET_6",
                                  "DATA_RATE_OFFSET_7"
                                ],
                                "type": "string"
                              },
                              "rx2_dr": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "encrypted": {
                            "format": "byte",
                            "type": "string"
                          },
                          "join_nonce": {
                            "example": "ABCDEF",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rx_delay": {
                            "default": "RX_DELAY_0",
                            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                            "enum": [
                              "RX_DELAY_0",
                              "RX_DELAY_1",
                              "RX_DELAY_2",
                              "RX_DELAY_3",
                              "RX_DELAY_4",
                              "RX_DELAY_5",
                              "RX_DELAY_6",
                              "RX_DELAY_7",
                              "RX_DELAY_8",
                              "RX_DELAY_9",
                              "RX_DELAY_10",
                              "RX_DELAY_11",
                              "RX_DELAY_12",
                              "RX_DELAY_13",
                              "RX_DELAY_14",
                              "RX_DELAY_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dev_nonce": {
                            "example": "ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          },
                          "major": {
                            "default": "LORAWAN_R1",
                            "enum": [
                              "LORAWAN_R1"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "decoded_payload": {
                            "type": "object"
                          },
                          "f_hdr": {
                            "properties": {
                              "dev_addr": {
                                "example": "2600ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "f_cnt": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "f_ctrl": {
                                "properties": {
                                  "ack": {
                                    "type": "boolean"
                                  },
                                  "adr": {
                                    "type": "boolean"
                                  },
                                  "adr_ack_req": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "class_b": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "f_pending": {
                                    "description": "Only on downlink.",
                                    "type": "boolean"
                                  }
                                },
                                "type": "object"
                              },
                              "f_opts": {
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "frm_payload": {
                            "format": "byte",
                            "type": "string"
                          },
                          "full_f_cnt": {
                            "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "mic": {
                        "format": "byte",
                        "type": "string"
                      },
                      "rejoin_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rejoin_cnt": {
                            "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "rejoin_type": {
                            "default": "CONTEXT",
                            "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                            "enum": [
                              "CONTEXT",
                              "SESSION",
                              "KEYS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "title": "Message represents a LoRaWAN message",
                    "type": "object"
                  },
                  "received_at": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "rx_metadata": {
                    "items": {
                      "properties": {
                        "channel_rssi": {
                          "format": "float",
                          "type": "number"
                        },
                        "downlink_path_constraint": {
                          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                          "enum": [
                            "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                            "DOWNLINK_PATH_CONSTRAINT_NEVER"
                          ],
                          "type": "string"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "packet_broker": {
                          "type": "object"
                        },
                        "relay": {
                          "type": "object"
                        },
                        "snr": {
                          "format": "float",
                          "type": "number"
                        },
                        "uplink_token": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "settings": {
                    "properties": {
                      "data_rate": {
                        "properties": {
                          "fsk": {
                            "properties": {
                              "bit_rate": {
                                "description": "Bit rate (bps).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lora": {
                            "properties": {
                              "bandwidth": {
                                "description": "Bandwidth (Hz).",
                                "format": "int64",
                                "type": "integer"
                              },
                              "coding_rate": {
                                "type": "string"
                              },
                              "spreading_factor": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lrfhss": {
                            "properties": {
                              "coding_rate": {
                                "type": "string"
                              },
                              "modulation_type": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "operating_channel_width": {
                                "description": "Operating Channel Width (Hz).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "rejected_adr_data_rate_indexes": {
              "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
              "items": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "rejected_adr_tx_power_indexes": {
              "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
              "items": {
                "format": "int64",
                "type": "integer"
              },
              "type": "array"
            },
            "rejected_data_rate_ranges": {
              "additionalProperties": {
                "properties": {
                  "ranges": {
                    "items": {
                      "properties": {
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "description": "Data rate ranges rejected by the device per frequency.",
              "type": "object"
            },
            "rejected_frequencies": {
              "description": "Frequencies rejected by the device.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "rx_windows_available": {
              "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "pending_session": {
          "properties": {
            "dev_addr": {
              "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "keys": {
              "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
              "properties": {
                "app_s_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "f_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "nwk_s_enc_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "s_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "last_a_f_cnt_down": {
              "description": "Last application downlink frame counter value used. Application Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_conf_f_cnt_down": {
              "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_f_cnt_up": {
              "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
              "format": "int64",
              "type": "integer"
            },
            "last_n_f_cnt_down": {
              "description": "Last network downlink frame counter value used. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "queued_application_downlinks": {
              "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
              "items": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "started_at": {
              "description": "Time when the session started. Network Server only.",
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "picture": {
          "properties": {
            "embedded": {
              "properties": {
                "data": {
                  "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                  "format": "byte",
                  "type": "string"
                },
                "mime_type": {
                  "description": "MIME type of the picture.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "sizes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "URLs of the picture for different sizes, if available on a CDN.",
              "type": "object"
            }
          },
          "type": "object"
        },
        "power_state": {
          "default": "POWER_UNKNOWN",
          "description": "Power state of the device.",
          "enum": [
            "POWER_UNKNOWN",
            "POWER_BATTERY",
            "POWER_EXTERNAL"
          ],
          "type": "string"
        },
        "provisioner_id": {
          "description": "ID of the provisioner. Stored in Join Server.",
          "type": "string"
        },
        "provisioning_data": {
          "description": "Vendor-specific provisioning data. Stored in Join Server.",
          "type": "object"
        },
        "queued_application_downlinks": {
          "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
          "items": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "resets_join_nonces": {
          "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "root_keys": {
          "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
          "properties": {
            "app_key": {
              "properties": {
                "encrypted_key": {
                  "format": "byte",
                  "type": "string"
                },
                "kek_label": {
                  "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                  "type": "string"
                },
                "key": {
                  "description": "The unencrypted AES key.",
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "nwk_key": {
              "properties": {
                "encrypted_key": {
                  "format": "byte",
                  "type": "string"
                },
                "kek_label": {
                  "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                  "type": "string"
                },
                "key": {
                  "description": "The unencrypted AES key.",
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "root_key_id": {
              "description": "Join Server issued identifier for the root keys.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "serial_number": {
          "type": "string"
        },
        "service_profile_id": {
          "description": "Default service profile. Stored in Entity Registry.",
          "type": "string"
        },
        "session": {
          "properties": {
            "dev_addr": {
              "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "keys": {
              "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
              "properties": {
                "app_s_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "f_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "nwk_s_enc_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "s_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "last_a_f_cnt_down": {
              "description": "Last application downlink frame counter value used. Application Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_conf_f_cnt_down": {
              "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_f_cnt_up": {
              "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
              "format": "int64",
              "type": "integer"
            },
            "last_n_f_cnt_down": {
              "description": "Last network downlink frame counter value used. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "queued_application_downlinks": {
              "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
              "items": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "started_at": {
              "description": "Time when the session started. Network Server only.",
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "skip_payload_crypto": {
          "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
          "type": "boolean"
        },
        "skip_payload_crypto_override": {
          "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
          "type": "boolean"
        },
        "supports_class_b": {
          "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "supports_class_c": {
          "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "supports_join": {
          "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "used_dev_nonces": {
          "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
          "items": {
            "format": "int64",
            "type": "integer"
          },
          "type": "array"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

Events

Read events served from a The Things Stack cluster.

Expand Collapse

post

/events

Stream live events, optionally with a tail of historical events (depending on server support and retention policy).

Expand Collapse

Events may arrive out-of-order.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "after": {
    "description": "If not empty, this will return historical events after the given time when the stream starts.\nIf used in combination with \"tail\", the limit that is reached first, is used.\nThe availability of historical events depends on server support and retention policy.",
    "format": "date-time",
    "type": "string"
  },
  "identifiers": {
    "items": {
      "description": "EntityIdentifiers contains one of the possible entity identifiers.",
      "properties": {
        "application_ids": {
          "properties": {
            "application_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "client_ids": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "device_ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "gateway_ids": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "organization_ids": {
          "properties": {
            "organization_id": {
              "description": "This ID shares namespace with user IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "names": {
    "description": "If provided, this will filter events, so that only events with the given names are returned.\nNames can be provided as either exact event names (e.g. 'gs.up.receive'),\nor as regular expressions (e.g. '/^gs\\..+/').",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "tail": {
    "description": "If greater than zero, this will return historical events, up to this maximum when the stream starts.\nIf used in combination with \"after\", the limit that is reached first, is used.\nThe availability of historical events depends on server support and retention policy.",
    "format": "int64",
    "type": "integer"
  }
}
Responses
Code Description Return Value
200 A successful response.(streaming responses)
Show JSON Schema
        {
  "error": {
    "properties": {
      "code": {
        "format": "int32",
        "type": "integer"
      },
      "details": {
        "items": {
          "additionalProperties": {},
          "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
          "properties": {
            "@type": {
              "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "message": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "result": {
    "properties": {
      "authentication": {
        "properties": {
          "token_id": {
            "description": "The ID of the token that was used.",
            "type": "string"
          },
          "token_type": {
            "description": "The type of token that was used. Common types are APIKey, AccessToken and SessionToken.",
            "type": "string"
          },
          "type": {
            "description": "The type of authentication that was used. This is typically a bearer token.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "context": {
        "additionalProperties": {
          "format": "byte",
          "type": "string"
        },
        "description": "Event context, internal use only.",
        "type": "object"
      },
      "correlation_ids": {
        "description": "Correlation IDs can be used to find related events and actions such as API calls.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "data": {
        "additionalProperties": {},
        "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
        "properties": {
          "@type": {
            "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "identifiers": {
        "description": "Identifiers of the entity (or entities) involved.",
        "items": {
          "description": "EntityIdentifiers contains one of the possible entity identifiers.",
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "client_ids": {
              "properties": {
                "client_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_ids": {
              "properties": {
                "application_ids": {
                  "properties": {
                    "application_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dev_addr": {
                  "description": "The LoRaWAN DevAddr.",
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "dev_eui": {
                  "description": "The LoRaWAN DevEUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "join_eui": {
                  "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "gateway_ids": {
              "properties": {
                "eui": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "gateway_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "name": {
        "description": "Name of the event. This can be used to find the (localized) event description.",
        "type": "string"
      },
      "origin": {
        "description": "The origin of the event. Typically the hostname of the server that created it.",
        "type": "string"
      },
      "remote_ip": {
        "description": "The IP address of the caller that triggered this event.",
        "type": "string"
      },
      "time": {
        "description": "Time at which the event was triggered.",
        "format": "date-time",
        "type": "string"
      },
      "unique_id": {
        "description": "The unique identifier of the event, assigned on creation.",
        "type": "string"
      },
      "user_agent": {
        "description": "The IP address of the caller that triggered this event.",
        "type": "string"
      },
      "visibility": {
        "properties": {
          "rights": {
            "items": {
              "default": "right_invalid",
              "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
              "enum": [
                "right_invalid",
                "RIGHT_USER_INFO",
                "RIGHT_USER_SETTINGS_BASIC",
                "RIGHT_USER_LIST",
                "RIGHT_USER_CREATE",
                "RIGHT_USER_SETTINGS_API_KEYS",
                "RIGHT_USER_DELETE",
                "RIGHT_USER_PURGE",
                "RIGHT_USER_AUTHORIZED_CLIENTS",
                "RIGHT_USER_APPLICATIONS_LIST",
                "RIGHT_USER_APPLICATIONS_CREATE",
                "RIGHT_USER_GATEWAYS_LIST",
                "RIGHT_USER_GATEWAYS_CREATE",
                "RIGHT_USER_CLIENTS_LIST",
                "RIGHT_USER_CLIENTS_CREATE",
                "RIGHT_USER_ORGANIZATIONS_LIST",
                "RIGHT_USER_ORGANIZATIONS_CREATE",
                "RIGHT_USER_NOTIFICATIONS_READ",
                "RIGHT_USER_ALL",
                "RIGHT_APPLICATION_INFO",
                "RIGHT_APPLICATION_SETTINGS_BASIC",
                "RIGHT_APPLICATION_SETTINGS_API_KEYS",
                "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
                "RIGHT_APPLICATION_SETTINGS_PACKAGES",
                "RIGHT_APPLICATION_DELETE",
                "RIGHT_APPLICATION_PURGE",
                "RIGHT_APPLICATION_DEVICES_READ",
                "RIGHT_APPLICATION_DEVICES_WRITE",
                "RIGHT_APPLICATION_DEVICES_READ_KEYS",
                "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
                "RIGHT_APPLICATION_TRAFFIC_READ",
                "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
                "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
                "RIGHT_APPLICATION_LINK",
                "RIGHT_APPLICATION_ALL",
                "RIGHT_CLIENT_ALL",
                "RIGHT_CLIENT_INFO",
                "RIGHT_CLIENT_SETTINGS_BASIC",
                "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
                "RIGHT_CLIENT_DELETE",
                "RIGHT_CLIENT_PURGE",
                "RIGHT_GATEWAY_INFO",
                "RIGHT_GATEWAY_SETTINGS_BASIC",
                "RIGHT_GATEWAY_SETTINGS_API_KEYS",
                "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
                "RIGHT_GATEWAY_DELETE",
                "RIGHT_GATEWAY_PURGE",
                "RIGHT_GATEWAY_TRAFFIC_READ",
                "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
                "RIGHT_GATEWAY_LINK",
                "RIGHT_GATEWAY_STATUS_READ",
                "RIGHT_GATEWAY_LOCATION_READ",
                "RIGHT_GATEWAY_WRITE_SECRETS",
                "RIGHT_GATEWAY_READ_SECRETS",
                "RIGHT_GATEWAY_ALL",
                "RIGHT_ORGANIZATION_INFO",
                "RIGHT_ORGANIZATION_SETTINGS_BASIC",
                "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
                "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
                "RIGHT_ORGANIZATION_DELETE",
                "RIGHT_ORGANIZATION_PURGE",
                "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
                "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
                "RIGHT_ORGANIZATION_GATEWAYS_LIST",
                "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
                "RIGHT_ORGANIZATION_CLIENTS_LIST",
                "RIGHT_ORGANIZATION_CLIENTS_CREATE",
                "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
                "RIGHT_ORGANIZATION_ALL",
                "RIGHT_SEND_INVITES",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
                "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
                "RIGHT_AUTHENTICATION_PROVIDER_INFO",
                "RIGHT_AUTHENTICATION_PROVIDER_LIST",
                "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
                "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
                "RIGHT_EXTERNAL_USER_CREATE",
                "RIGHT_EXTERNAL_USER_INFO",
                "RIGHT_EXTERNAL_USER_DELETE",
                "RIGHT_PACKET_BROKER_AGENT_READ",
                "RIGHT_PACKET_BROKER_AGENT_WRITE",
                "RIGHT_TENANT_CONFIGURATION_UPDATE",
                "RIGHT_LABEL_CREATE",
                "RIGHT_LABEL_INFO",
                "RIGHT_LABELS_LIST",
                "RIGHT_LABEL_UPDATE",
                "RIGHT_LABEL_DELETE",
                "RIGHT_LABEL_ASSIGN",
                "RIGHT_ALL"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/events/related

Expand Collapse

Request Parameters
Field Type Required Description
correlation_id string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "events": {
    "items": {
      "properties": {
        "authentication": {
          "properties": {
            "token_id": {
              "description": "The ID of the token that was used.",
              "type": "string"
            },
            "token_type": {
              "description": "The type of token that was used. Common types are APIKey, AccessToken and SessionToken.",
              "type": "string"
            },
            "type": {
              "description": "The type of authentication that was used. This is typically a bearer token.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "context": {
          "additionalProperties": {
            "format": "byte",
            "type": "string"
          },
          "description": "Event context, internal use only.",
          "type": "object"
        },
        "correlation_ids": {
          "description": "Correlation IDs can be used to find related events and actions such as API calls.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "data": {
          "additionalProperties": {},
          "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
          "properties": {
            "@type": {
              "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "identifiers": {
          "description": "Identifiers of the entity (or entities) involved.",
          "items": {
            "description": "EntityIdentifiers contains one of the possible entity identifiers.",
            "properties": {
              "application_ids": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "client_ids": {
                "properties": {
                  "client_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "device_ids": {
                "properties": {
                  "application_ids": {
                    "properties": {
                      "application_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dev_addr": {
                    "description": "The LoRaWAN DevAddr.",
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "dev_eui": {
                    "description": "The LoRaWAN DevEUI.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "device_id": {
                    "type": "string"
                  },
                  "join_eui": {
                    "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "gateway_ids": {
                "properties": {
                  "eui": {
                    "description": "Secondary identifier, which can only be used in specific requests.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "gateway_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "organization_ids": {
                "properties": {
                  "organization_id": {
                    "description": "This ID shares namespace with user IDs.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "user_ids": {
                "properties": {
                  "email": {
                    "description": "Secondary identifier, which can only be used in specific requests.",
                    "type": "string"
                  },
                  "user_id": {
                    "description": "This ID shares namespace with organization IDs.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "name": {
          "description": "Name of the event. This can be used to find the (localized) event description.",
          "type": "string"
        },
        "origin": {
          "description": "The origin of the event. Typically the hostname of the server that created it.",
          "type": "string"
        },
        "remote_ip": {
          "description": "The IP address of the caller that triggered this event.",
          "type": "string"
        },
        "time": {
          "description": "Time at which the event was triggered.",
          "format": "date-time",
          "type": "string"
        },
        "unique_id": {
          "description": "The unique identifier of the event, assigned on creation.",
          "type": "string"
        },
        "user_agent": {
          "description": "The IP address of the caller that triggered this event.",
          "type": "string"
        },
        "visibility": {
          "properties": {
            "rights": {
              "items": {
                "default": "right_invalid",
                "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
                "enum": [
                  "right_invalid",
                  "RIGHT_USER_INFO",
                  "RIGHT_USER_SETTINGS_BASIC",
                  "RIGHT_USER_LIST",
                  "RIGHT_USER_CREATE",
                  "RIGHT_USER_SETTINGS_API_KEYS",
                  "RIGHT_USER_DELETE",
                  "RIGHT_USER_PURGE",
                  "RIGHT_USER_AUTHORIZED_CLIENTS",
                  "RIGHT_USER_APPLICATIONS_LIST",
                  "RIGHT_USER_APPLICATIONS_CREATE",
                  "RIGHT_USER_GATEWAYS_LIST",
                  "RIGHT_USER_GATEWAYS_CREATE",
                  "RIGHT_USER_CLIENTS_LIST",
                  "RIGHT_USER_CLIENTS_CREATE",
                  "RIGHT_USER_ORGANIZATIONS_LIST",
                  "RIGHT_USER_ORGANIZATIONS_CREATE",
                  "RIGHT_USER_NOTIFICATIONS_READ",
                  "RIGHT_USER_ALL",
                  "RIGHT_APPLICATION_INFO",
                  "RIGHT_APPLICATION_SETTINGS_BASIC",
                  "RIGHT_APPLICATION_SETTINGS_API_KEYS",
                  "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
                  "RIGHT_APPLICATION_SETTINGS_PACKAGES",
                  "RIGHT_APPLICATION_DELETE",
                  "RIGHT_APPLICATION_PURGE",
                  "RIGHT_APPLICATION_DEVICES_READ",
                  "RIGHT_APPLICATION_DEVICES_WRITE",
                  "RIGHT_APPLICATION_DEVICES_READ_KEYS",
                  "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
                  "RIGHT_APPLICATION_TRAFFIC_READ",
                  "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
                  "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
                  "RIGHT_APPLICATION_LINK",
                  "RIGHT_APPLICATION_ALL",
                  "RIGHT_CLIENT_ALL",
                  "RIGHT_CLIENT_INFO",
                  "RIGHT_CLIENT_SETTINGS_BASIC",
                  "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
                  "RIGHT_CLIENT_DELETE",
                  "RIGHT_CLIENT_PURGE",
                  "RIGHT_GATEWAY_INFO",
                  "RIGHT_GATEWAY_SETTINGS_BASIC",
                  "RIGHT_GATEWAY_SETTINGS_API_KEYS",
                  "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
                  "RIGHT_GATEWAY_DELETE",
                  "RIGHT_GATEWAY_PURGE",
                  "RIGHT_GATEWAY_TRAFFIC_READ",
                  "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
                  "RIGHT_GATEWAY_LINK",
                  "RIGHT_GATEWAY_STATUS_READ",
                  "RIGHT_GATEWAY_LOCATION_READ",
                  "RIGHT_GATEWAY_WRITE_SECRETS",
                  "RIGHT_GATEWAY_READ_SECRETS",
                  "RIGHT_GATEWAY_ALL",
                  "RIGHT_ORGANIZATION_INFO",
                  "RIGHT_ORGANIZATION_SETTINGS_BASIC",
                  "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
                  "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
                  "RIGHT_ORGANIZATION_DELETE",
                  "RIGHT_ORGANIZATION_PURGE",
                  "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
                  "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
                  "RIGHT_ORGANIZATION_GATEWAYS_LIST",
                  "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
                  "RIGHT_ORGANIZATION_CLIENTS_LIST",
                  "RIGHT_ORGANIZATION_CLIENTS_CREATE",
                  "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
                  "RIGHT_ORGANIZATION_ALL",
                  "RIGHT_SEND_INVITES",
                  "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
                  "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
                  "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
                  "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
                  "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
                  "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
                  "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
                  "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
                  "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
                  "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
                  "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
                  "RIGHT_AUTHENTICATION_PROVIDER_INFO",
                  "RIGHT_AUTHENTICATION_PROVIDER_LIST",
                  "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
                  "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
                  "RIGHT_EXTERNAL_USER_CREATE",
                  "RIGHT_EXTERNAL_USER_INFO",
                  "RIGHT_EXTERNAL_USER_DELETE",
                  "RIGHT_PACKET_BROKER_AGENT_READ",
                  "RIGHT_PACKET_BROKER_AGENT_WRITE",
                  "RIGHT_TENANT_CONFIGURATION_UPDATE",
                  "RIGHT_LABEL_CREATE",
                  "RIGHT_LABEL_INFO",
                  "RIGHT_LABELS_LIST",
                  "RIGHT_LABEL_UPDATE",
                  "RIGHT_LABEL_DELETE",
                  "RIGHT_LABEL_ASSIGN",
                  "RIGHT_ALL"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

GatewayConfigurationService

Fetch configuration for gateways.

Expand Collapse

get

/gcs/gateways/configuration/{gateway_ids.gateway_id}/{format}/{filename}

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
format string true
filename string true
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
type string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "contents": {
    "format": "byte",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gcs/gateways/configuration/{gateway_ids.gateway_id}/{format}/{type}/{filename}

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
format string true
type string true
filename string true
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "contents": {
    "format": "byte",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ManagedGatewayConfigurationService

Configure managed gateways.

Expand Collapse

put

/gcs/gateways/managed/{gateway.ids.gateway_id}

Expand Collapse

Request Parameters
Field Type Required Description
gateway.ids.gateway_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "description": "The names of the gateway fields that should be updated.",
    "type": "string"
  },
  "gateway": {
    "properties": {
      "cellular_imei": {
        "type": "string"
      },
      "cellular_imsi": {
        "type": "string"
      },
      "ethernet_mac_address": {
        "example": "EC656E000100",
        "format": "string",
        "type": "string"
      },
      "ethernet_profile_id": {
        "type": "string"
      },
      "ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          },
          "runtime_version": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "wifi_mac_address": {
        "example": "EC656E000100",
        "format": "string",
        "type": "string"
      },
      "wifi_profile_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "cellular_imei": {
    "type": "string"
  },
  "cellular_imsi": {
    "type": "string"
  },
  "ethernet_mac_address": {
    "example": "EC656E000100",
    "format": "string",
    "type": "string"
  },
  "ethernet_profile_id": {
    "type": "string"
  },
  "ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "gateway_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      },
      "runtime_version": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "wifi_mac_address": {
    "example": "EC656E000100",
    "format": "string",
    "type": "string"
  },
  "wifi_profile_id": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gcs/gateways/managed/{gateway_ids.gateway_id}

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "cellular_imei": {
    "type": "string"
  },
  "cellular_imsi": {
    "type": "string"
  },
  "ethernet_mac_address": {
    "example": "EC656E000100",
    "format": "string",
    "type": "string"
  },
  "ethernet_profile_id": {
    "type": "string"
  },
  "ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "gateway_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      },
      "runtime_version": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "wifi_mac_address": {
    "example": "EC656E000100",
    "format": "string",
    "type": "string"
  },
  "wifi_profile_id": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gcs/gateways/managed/{gateway_id}/events

Expand Collapse

Request Parameters
Field Type Required Description
gateway_id string true
Request Body
Show JSON Schema
{
  "eui": {
    "description": "Secondary identifier, which can only be used in specific requests.",
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.(streaming responses)
Show JSON Schema
        {
  "error": {
    "properties": {
      "code": {
        "format": "int32",
        "type": "integer"
      },
      "details": {
        "items": {
          "additionalProperties": {},
          "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
          "properties": {
            "@type": {
              "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "message": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "result": {
    "properties": {
      "cellular_backhaul": {
        "properties": {
          "network_interface": {
            "properties": {
              "addresses": {
                "properties": {
                  "dns_servers": {
                    "example": [
                      "192.0.2.0",
                      "192.0.2.1"
                    ],
                    "items": {
                      "format": "string",
                      "type": "string"
                    },
                    "type": "string"
                  },
                  "gateway": {
                    "example": "192.0.2.0",
                    "format": "string",
                    "type": "string"
                  },
                  "ip_addresses": {
                    "example": [
                      "192.0.2.0",
                      "2001:db8::1"
                    ],
                    "items": {
                      "format": "string",
                      "type": "string"
                    },
                    "type": "string"
                  },
                  "subnet_mask": {
                    "example": "192.0.2.0",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "dhcp_enabled": {
                "type": "boolean"
              },
              "status": {
                "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED",
                "enum": [
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED",
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN",
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP",
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "operator": {
            "type": "string"
          },
          "rssi": {
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "controller_connection": {
        "properties": {
          "network_interface_type": {
            "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED",
            "enum": [
              "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED",
              "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR",
              "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI",
              "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "entity": {
        "properties": {
          "cellular_imei": {
            "type": "string"
          },
          "cellular_imsi": {
            "type": "string"
          },
          "ethernet_mac_address": {
            "example": "EC656E000100",
            "format": "string",
            "type": "string"
          },
          "ethernet_profile_id": {
            "type": "string"
          },
          "ids": {
            "properties": {
              "eui": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "gateway_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              },
              "runtime_version": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "wifi_mac_address": {
            "example": "EC656E000100",
            "format": "string",
            "type": "string"
          },
          "wifi_profile_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ethernet_backhaul": {
        "properties": {
          "network_interface": {
            "properties": {
              "addresses": {
                "properties": {
                  "dns_servers": {
                    "example": [
                      "192.0.2.0",
                      "192.0.2.1"
                    ],
                    "items": {
                      "format": "string",
                      "type": "string"
                    },
                    "type": "string"
                  },
                  "gateway": {
                    "example": "192.0.2.0",
                    "format": "string",
                    "type": "string"
                  },
                  "ip_addresses": {
                    "example": [
                      "192.0.2.0",
                      "2001:db8::1"
                    ],
                    "items": {
                      "format": "string",
                      "type": "string"
                    },
                    "type": "string"
                  },
                  "subnet_mask": {
                    "example": "192.0.2.0",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "dhcp_enabled": {
                "type": "boolean"
              },
              "status": {
                "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED",
                "enum": [
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED",
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN",
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP",
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "gateway_server_connection": {
        "properties": {
          "address": {
            "type": "string"
          },
          "network_interface_type": {
            "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED",
            "enum": [
              "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_UNSPECIFIED",
              "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_CELLULAR",
              "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_WIFI",
              "MANAGED_GATEWAY_NETWORK_INTERFACE_TYPE_ETHERNET"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "location": {
        "properties": {
          "accuracy": {
            "description": "The accuracy of the location (meters).",
            "format": "int32",
            "type": "integer"
          },
          "altitude": {
            "description": "The altitude (meters), where 0 is the mean sea level.",
            "format": "int32",
            "type": "integer"
          },
          "latitude": {
            "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
            "format": "double",
            "type": "number"
          },
          "longitude": {
            "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
            "format": "double",
            "type": "number"
          },
          "source": {
            "default": "SOURCE_UNKNOWN",
            "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
            "enum": [
              "SOURCE_UNKNOWN",
              "SOURCE_GPS",
              "SOURCE_REGISTRY",
              "SOURCE_IP_GEOLOCATION",
              "SOURCE_WIFI_RSSI_GEOLOCATION",
              "SOURCE_BT_RSSI_GEOLOCATION",
              "SOURCE_LORA_RSSI_GEOLOCATION",
              "SOURCE_LORA_TDOA_GEOLOCATION",
              "SOURCE_COMBINED_GEOLOCATION"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "system_status": {
        "properties": {
          "cpu_temperature": {
            "description": "CPU temperature (Celsius).",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "wifi_backhaul": {
        "properties": {
          "authentication_mode": {
            "type": "string"
          },
          "bssid": {
            "example": "EC656E000100",
            "format": "string",
            "type": "string"
          },
          "channel": {
            "format": "int64",
            "type": "integer"
          },
          "network_interface": {
            "properties": {
              "addresses": {
                "properties": {
                  "dns_servers": {
                    "example": [
                      "192.0.2.0",
                      "192.0.2.1"
                    ],
                    "items": {
                      "format": "string",
                      "type": "string"
                    },
                    "type": "string"
                  },
                  "gateway": {
                    "example": "192.0.2.0",
                    "format": "string",
                    "type": "string"
                  },
                  "ip_addresses": {
                    "example": [
                      "192.0.2.0",
                      "2001:db8::1"
                    ],
                    "items": {
                      "format": "string",
                      "type": "string"
                    },
                    "type": "string"
                  },
                  "subnet_mask": {
                    "example": "192.0.2.0",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "dhcp_enabled": {
                "type": "boolean"
              },
              "status": {
                "default": "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED",
                "enum": [
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UNSPECIFIED",
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_DOWN",
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_UP",
                  "MANAGED_GATEWAY_NETWORK_INTERFACE_STATUS_FAILED"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rssi": {
            "format": "float",
            "type": "number"
          },
          "ssid": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gcs/gateways/managed/{gateway_id}/wifi/scan

Expand Collapse

Request Parameters
Field Type Required Description
gateway_id string true
Request Body
Show JSON Schema
{
  "eui": {
    "description": "Secondary identifier, which can only be used in specific requests.",
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "access_points": {
    "items": {
      "properties": {
        "authentication_mode": {
          "type": "string"
        },
        "bssid": {
          "example": "EC656E000100",
          "format": "string",
          "type": "string"
        },
        "channel": {
          "format": "int64",
          "type": "integer"
        },
        "rssi": {
          "format": "float",
          "type": "number"
        },
        "ssid": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ManagedGatewayWiFiProfileConfigurationService

Configure WiFi profiles for managed gateways.

Expand Collapse

get

/gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "profiles": {
    "items": {
      "properties": {
        "network_interface_addresses": {
          "properties": {
            "dns_servers": {
              "example": [
                "192.0.2.0",
                "192.0.2.1"
              ],
              "items": {
                "format": "string",
                "type": "string"
              },
              "type": "string"
            },
            "gateway": {
              "example": "192.0.2.0",
              "format": "string",
              "type": "string"
            },
            "ip_addresses": {
              "example": [
                "192.0.2.0",
                "2001:db8::1"
              ],
              "items": {
                "format": "string",
                "type": "string"
              },
              "type": "string"
            },
            "subnet_mask": {
              "example": "192.0.2.0",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "password": {
          "type": "string"
        },
        "profile_id": {
          "type": "string"
        },
        "profile_name": {
          "type": "string"
        },
        "shared": {
          "type": "boolean"
        },
        "ssid": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "profile": {
    "properties": {
      "network_interface_addresses": {
        "properties": {
          "dns_servers": {
            "example": [
              "192.0.2.0",
              "192.0.2.1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "gateway": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          },
          "ip_addresses": {
            "example": [
              "192.0.2.0",
              "2001:db8::1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "subnet_mask": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "password": {
        "type": "string"
      },
      "profile_id": {
        "type": "string"
      },
      "profile_name": {
        "type": "string"
      },
      "shared": {
        "type": "boolean"
      },
      "ssid": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "password": {
    "type": "string"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  },
  "ssid": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}/{profile.profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
profile.profile_id string true
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the gateway fields that should be updated.",
    "type": "string"
  },
  "profile": {
    "properties": {
      "network_interface_addresses": {
        "properties": {
          "dns_servers": {
            "example": [
              "192.0.2.0",
              "192.0.2.1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "gateway": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          },
          "ip_addresses": {
            "example": [
              "192.0.2.0",
              "2001:db8::1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "subnet_mask": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "password": {
        "type": "string"
      },
      "profile_name": {
        "type": "string"
      },
      "shared": {
        "type": "boolean"
      },
      "ssid": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "password": {
    "type": "string"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  },
  "ssid": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}/{profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
profile_id string true
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gcs/gateways/profiles/wifi/organizations/{collaborator.organization_ids.organization_id}/{profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
profile_id string true
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "password": {
    "type": "string"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  },
  "ssid": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "profiles": {
    "items": {
      "properties": {
        "network_interface_addresses": {
          "properties": {
            "dns_servers": {
              "example": [
                "192.0.2.0",
                "192.0.2.1"
              ],
              "items": {
                "format": "string",
                "type": "string"
              },
              "type": "string"
            },
            "gateway": {
              "example": "192.0.2.0",
              "format": "string",
              "type": "string"
            },
            "ip_addresses": {
              "example": [
                "192.0.2.0",
                "2001:db8::1"
              ],
              "items": {
                "format": "string",
                "type": "string"
              },
              "type": "string"
            },
            "subnet_mask": {
              "example": "192.0.2.0",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "password": {
          "type": "string"
        },
        "profile_id": {
          "type": "string"
        },
        "profile_name": {
          "type": "string"
        },
        "shared": {
          "type": "boolean"
        },
        "ssid": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "profile": {
    "properties": {
      "network_interface_addresses": {
        "properties": {
          "dns_servers": {
            "example": [
              "192.0.2.0",
              "192.0.2.1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "gateway": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          },
          "ip_addresses": {
            "example": [
              "192.0.2.0",
              "2001:db8::1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "subnet_mask": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "password": {
        "type": "string"
      },
      "profile_id": {
        "type": "string"
      },
      "profile_name": {
        "type": "string"
      },
      "shared": {
        "type": "boolean"
      },
      "ssid": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "password": {
    "type": "string"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  },
  "ssid": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}/{profile.profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
profile.profile_id string true
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the gateway fields that should be updated.",
    "type": "string"
  },
  "profile": {
    "properties": {
      "network_interface_addresses": {
        "properties": {
          "dns_servers": {
            "example": [
              "192.0.2.0",
              "192.0.2.1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "gateway": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          },
          "ip_addresses": {
            "example": [
              "192.0.2.0",
              "2001:db8::1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "subnet_mask": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "password": {
        "type": "string"
      },
      "profile_name": {
        "type": "string"
      },
      "shared": {
        "type": "boolean"
      },
      "ssid": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "password": {
    "type": "string"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  },
  "ssid": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}/{profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
profile_id string true
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gcs/gateways/profiles/wifi/users/{collaborator.user_ids.user_id}/{profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
profile_id string true
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "password": {
    "type": "string"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  },
  "ssid": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ManagedGatewayEthernetProfileConfigurationService

Configure Ethernet profiles for managed gateways.

Expand Collapse

get

/gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "profiles": {
    "items": {
      "properties": {
        "network_interface_addresses": {
          "properties": {
            "dns_servers": {
              "example": [
                "192.0.2.0",
                "192.0.2.1"
              ],
              "items": {
                "format": "string",
                "type": "string"
              },
              "type": "string"
            },
            "gateway": {
              "example": "192.0.2.0",
              "format": "string",
              "type": "string"
            },
            "ip_addresses": {
              "example": [
                "192.0.2.0",
                "2001:db8::1"
              ],
              "items": {
                "format": "string",
                "type": "string"
              },
              "type": "string"
            },
            "subnet_mask": {
              "example": "192.0.2.0",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "profile_id": {
          "type": "string"
        },
        "profile_name": {
          "type": "string"
        },
        "shared": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "profile": {
    "properties": {
      "network_interface_addresses": {
        "properties": {
          "dns_servers": {
            "example": [
              "192.0.2.0",
              "192.0.2.1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "gateway": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          },
          "ip_addresses": {
            "example": [
              "192.0.2.0",
              "2001:db8::1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "subnet_mask": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "type": "string"
      },
      "profile_name": {
        "type": "string"
      },
      "shared": {
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}/{profile.profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
profile.profile_id string true
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the gateway fields that should be updated.",
    "type": "string"
  },
  "profile": {
    "properties": {
      "network_interface_addresses": {
        "properties": {
          "dns_servers": {
            "example": [
              "192.0.2.0",
              "192.0.2.1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "gateway": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          },
          "ip_addresses": {
            "example": [
              "192.0.2.0",
              "2001:db8::1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "subnet_mask": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_name": {
        "type": "string"
      },
      "shared": {
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}/{profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
profile_id string true
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gcs/gateways/profiles/ethernet/organizations/{collaborator.organization_ids.organization_id}/{profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
profile_id string true
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "profiles": {
    "items": {
      "properties": {
        "network_interface_addresses": {
          "properties": {
            "dns_servers": {
              "example": [
                "192.0.2.0",
                "192.0.2.1"
              ],
              "items": {
                "format": "string",
                "type": "string"
              },
              "type": "string"
            },
            "gateway": {
              "example": "192.0.2.0",
              "format": "string",
              "type": "string"
            },
            "ip_addresses": {
              "example": [
                "192.0.2.0",
                "2001:db8::1"
              ],
              "items": {
                "format": "string",
                "type": "string"
              },
              "type": "string"
            },
            "subnet_mask": {
              "example": "192.0.2.0",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "profile_id": {
          "type": "string"
        },
        "profile_name": {
          "type": "string"
        },
        "shared": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "profile": {
    "properties": {
      "network_interface_addresses": {
        "properties": {
          "dns_servers": {
            "example": [
              "192.0.2.0",
              "192.0.2.1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "gateway": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          },
          "ip_addresses": {
            "example": [
              "192.0.2.0",
              "2001:db8::1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "subnet_mask": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "type": "string"
      },
      "profile_name": {
        "type": "string"
      },
      "shared": {
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}/{profile.profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
profile.profile_id string true
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the gateway fields that should be updated.",
    "type": "string"
  },
  "profile": {
    "properties": {
      "network_interface_addresses": {
        "properties": {
          "dns_servers": {
            "example": [
              "192.0.2.0",
              "192.0.2.1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "gateway": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          },
          "ip_addresses": {
            "example": [
              "192.0.2.0",
              "2001:db8::1"
            ],
            "items": {
              "format": "string",
              "type": "string"
            },
            "type": "string"
          },
          "subnet_mask": {
            "example": "192.0.2.0",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_name": {
        "type": "string"
      },
      "shared": {
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}/{profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
profile_id string true
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gcs/gateways/profiles/ethernet/users/{collaborator.user_ids.user_id}/{profile_id}

Expand Collapse

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
profile_id string true
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "network_interface_addresses": {
    "properties": {
      "dns_servers": {
        "example": [
          "192.0.2.0",
          "192.0.2.1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "gateway": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      },
      "ip_addresses": {
        "example": [
          "192.0.2.0",
          "2001:db8::1"
        ],
        "items": {
          "format": "string",
          "type": "string"
        },
        "type": "string"
      },
      "subnet_mask": {
        "example": "192.0.2.0",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "profile_id": {
    "type": "string"
  },
  "profile_name": {
    "type": "string"
  },
  "shared": {
    "type": "boolean"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

GatewayRegistry

Manage gateways.

Expand Collapse

get

/gateways

List gateways where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the gateways the caller has access to. Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted gateways.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "gateways": {
    "items": {
      "description": "Gateway is the message that defines a gateway on the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "alert_notification_profile_ids": {
          "properties": {
            "profile_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "antennas": {
          "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
          "items": {
            "description": "GatewayAntenna is the message that defines a gateway antenna.",
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "gain": {
                "description": "Antenna gain relative to the gateway, in dBi.",
                "format": "float",
                "type": "number"
              },
              "location": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "placement": {
                "default": "PLACEMENT_UNKNOWN",
                "enum": [
                  "PLACEMENT_UNKNOWN",
                  "INDOOR",
                  "OUTDOOR"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
          "type": "object"
        },
        "auto_update": {
          "type": "boolean"
        },
        "claim_authentication_code": {
          "description": "Authentication code for claiming gateways.",
          "properties": {
            "secret": {
              "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
              "properties": {
                "key_id": {
                  "description": "ID of the Key used to encrypt the secret.",
                  "type": "string"
                },
                "value": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "valid_from": {
              "format": "date-time",
              "type": "string"
            },
            "valid_to": {
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "disable_packet_broker_forwarding": {
          "type": "boolean"
        },
        "downlink_path_constraint": {
          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
          "enum": [
            "DOWNLINK_PATH_CONSTRAINT_NONE",
            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
            "DOWNLINK_PATH_CONSTRAINT_NEVER"
          ],
          "type": "string"
        },
        "enforce_duty_cycle": {
          "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
          "type": "boolean"
        },
        "frequency_plan_id": {
          "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
          "type": "string"
        },
        "frequency_plan_ids": {
          "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "gateway_server_address": {
          "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "title": "next: 34",
          "type": "array"
        },
        "lbs_lns_secret": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "location_public": {
          "description": "The location of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "lrfhss": {
          "description": "LR-FHSS gateway capabilities.",
          "properties": {
            "supported": {
              "description": "The gateway supports the LR-FHSS uplink channels.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "require_authenticated_connection": {
          "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
          "type": "boolean"
        },
        "schedule_anytime_delay": {
          "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
          "type": "string"
        },
        "schedule_downlink_late": {
          "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
          "type": "boolean"
        },
        "status_public": {
          "description": "The status of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "target_cups_key": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "target_cups_uri": {
          "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "update_channel": {
          "type": "string"
        },
        "update_location_from_status": {
          "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
          "type": "boolean"
        },
        "updated_at": {
          "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            },
            "runtime_version": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gateways/filter

List gateways where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the gateways the caller has access to. Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "deleted": {
    "description": "Only return recently deleted gateways.",
    "type": "boolean"
  },
  "field_mask": {
    "description": "The names of the gateway fields that should be returned.",
    "type": "string"
  },
  "filters": {
    "items": {
      "description": "Filter gateways by fields.",
      "properties": {
        "updated_since": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "limit": {
    "description": "Limit the number of results per page.",
    "format": "int64",
    "type": "integer"
  },
  "order": {
    "description": "Order the results by this field path (must be present in the field mask).\nDefault ordering is by ID. Prepend with a minus (-) to reverse the order.",
    "type": "string"
  },
  "page": {
    "description": "Page number for pagination. 0 is interpreted as 1.",
    "format": "int64",
    "type": "integer"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "gateways": {
    "items": {
      "description": "Gateway is the message that defines a gateway on the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "alert_notification_profile_ids": {
          "properties": {
            "profile_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "antennas": {
          "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
          "items": {
            "description": "GatewayAntenna is the message that defines a gateway antenna.",
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "gain": {
                "description": "Antenna gain relative to the gateway, in dBi.",
                "format": "float",
                "type": "number"
              },
              "location": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "placement": {
                "default": "PLACEMENT_UNKNOWN",
                "enum": [
                  "PLACEMENT_UNKNOWN",
                  "INDOOR",
                  "OUTDOOR"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
          "type": "object"
        },
        "auto_update": {
          "type": "boolean"
        },
        "claim_authentication_code": {
          "description": "Authentication code for claiming gateways.",
          "properties": {
            "secret": {
              "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
              "properties": {
                "key_id": {
                  "description": "ID of the Key used to encrypt the secret.",
                  "type": "string"
                },
                "value": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "valid_from": {
              "format": "date-time",
              "type": "string"
            },
            "valid_to": {
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "disable_packet_broker_forwarding": {
          "type": "boolean"
        },
        "downlink_path_constraint": {
          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
          "enum": [
            "DOWNLINK_PATH_CONSTRAINT_NONE",
            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
            "DOWNLINK_PATH_CONSTRAINT_NEVER"
          ],
          "type": "string"
        },
        "enforce_duty_cycle": {
          "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
          "type": "boolean"
        },
        "frequency_plan_id": {
          "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
          "type": "string"
        },
        "frequency_plan_ids": {
          "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "gateway_server_address": {
          "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "title": "next: 34",
          "type": "array"
        },
        "lbs_lns_secret": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "location_public": {
          "description": "The location of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "lrfhss": {
          "description": "LR-FHSS gateway capabilities.",
          "properties": {
            "supported": {
              "description": "The gateway supports the LR-FHSS uplink channels.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "require_authenticated_connection": {
          "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
          "type": "boolean"
        },
        "schedule_anytime_delay": {
          "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
          "type": "string"
        },
        "schedule_downlink_late": {
          "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
          "type": "boolean"
        },
        "status_public": {
          "description": "The status of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "target_cups_key": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "target_cups_uri": {
          "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "update_channel": {
          "type": "string"
        },
        "update_location_from_status": {
          "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
          "type": "boolean"
        },
        "updated_at": {
          "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            },
            "runtime_version": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/gateways/{gateway.ids.gateway_id}

Update the gateway, changing the fields specified by the field mask to the provided values.

Expand Collapse

Request Parameters
Field Type Required Description
gateway.ids.gateway_id string true
Request Body
Show JSON Schema
{
  "field_mask": {
    "description": "The names of the gateway fields that should be updated.",
    "type": "string"
  },
  "gateway": {
    "description": "Gateway is the message that defines a gateway on the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "alert_notification_profile_ids": {
        "properties": {
          "profile_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "antennas": {
        "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
        "items": {
          "description": "GatewayAntenna is the message that defines a gateway antenna.",
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "gain": {
              "description": "Antenna gain relative to the gateway, in dBi.",
              "format": "float",
              "type": "number"
            },
            "location": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "placement": {
              "default": "PLACEMENT_UNKNOWN",
              "enum": [
                "PLACEMENT_UNKNOWN",
                "INDOOR",
                "OUTDOOR"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
        "type": "object"
      },
      "auto_update": {
        "type": "boolean"
      },
      "claim_authentication_code": {
        "description": "Authentication code for claiming gateways.",
        "properties": {
          "secret": {
            "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
            "properties": {
              "key_id": {
                "description": "ID of the Key used to encrypt the secret.",
                "type": "string"
              },
              "value": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "disable_packet_broker_forwarding": {
        "type": "boolean"
      },
      "downlink_path_constraint": {
        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
        "enum": [
          "DOWNLINK_PATH_CONSTRAINT_NONE",
          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
          "DOWNLINK_PATH_CONSTRAINT_NEVER"
        ],
        "type": "string"
      },
      "enforce_duty_cycle": {
        "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
        "type": "boolean"
      },
      "frequency_plan_id": {
        "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
        "type": "string"
      },
      "frequency_plan_ids": {
        "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "gateway_server_address": {
        "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "ids": {
        "description": "The identifiers of the gateway. These are public and can be seen by any authenticated user in the network.",
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "title": "The identifiers of the gateway. These are public and can be seen by any authenticated user in the network.",
        "type": "object"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "title": "next: 34",
        "type": "array"
      },
      "lbs_lns_secret": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "location_public": {
        "description": "The location of this gateway may be publicly displayed.",
        "type": "boolean"
      },
      "lrfhss": {
        "description": "LR-FHSS gateway capabilities.",
        "properties": {
          "supported": {
            "description": "The gateway supports the LR-FHSS uplink channels.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "name": {
        "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "require_authenticated_connection": {
        "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
        "type": "boolean"
      },
      "schedule_anytime_delay": {
        "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
        "type": "string"
      },
      "schedule_downlink_late": {
        "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
        "type": "boolean"
      },
      "status_public": {
        "description": "The status of this gateway may be publicly displayed.",
        "type": "boolean"
      },
      "target_cups_key": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "target_cups_uri": {
        "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "update_channel": {
        "type": "string"
      },
      "update_location_from_status": {
        "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
        "type": "boolean"
      },
      "updated_at": {
        "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          },
          "runtime_version": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "alert_notification_profile_ids": {
    "properties": {
      "profile_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "antennas": {
    "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
    "items": {
      "description": "GatewayAntenna is the message that defines a gateway antenna.",
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "gain": {
          "description": "Antenna gain relative to the gateway, in dBi.",
          "format": "float",
          "type": "number"
        },
        "location": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "placement": {
          "default": "PLACEMENT_UNKNOWN",
          "enum": [
            "PLACEMENT_UNKNOWN",
            "INDOOR",
            "OUTDOOR"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
    "type": "object"
  },
  "auto_update": {
    "type": "boolean"
  },
  "claim_authentication_code": {
    "description": "Authentication code for claiming gateways.",
    "properties": {
      "secret": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "disable_packet_broker_forwarding": {
    "type": "boolean"
  },
  "downlink_path_constraint": {
    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
    "enum": [
      "DOWNLINK_PATH_CONSTRAINT_NONE",
      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
      "DOWNLINK_PATH_CONSTRAINT_NEVER"
    ],
    "type": "string"
  },
  "enforce_duty_cycle": {
    "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
    "type": "boolean"
  },
  "frequency_plan_id": {
    "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
    "type": "string"
  },
  "frequency_plan_ids": {
    "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "gateway_server_address": {
    "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "gateway_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "title": "next: 34",
    "type": "array"
  },
  "lbs_lns_secret": {
    "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
    "properties": {
      "key_id": {
        "description": "ID of the Key used to encrypt the secret.",
        "type": "string"
      },
      "value": {
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_public": {
    "description": "The location of this gateway may be publicly displayed.",
    "type": "boolean"
  },
  "lrfhss": {
    "description": "LR-FHSS gateway capabilities.",
    "properties": {
      "supported": {
        "description": "The gateway supports the LR-FHSS uplink channels.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "require_authenticated_connection": {
    "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
    "type": "boolean"
  },
  "schedule_anytime_delay": {
    "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
    "type": "string"
  },
  "schedule_downlink_late": {
    "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
    "type": "boolean"
  },
  "status_public": {
    "description": "The status of this gateway may be publicly displayed.",
    "type": "boolean"
  },
  "target_cups_key": {
    "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
    "properties": {
      "key_id": {
        "description": "ID of the Key used to encrypt the secret.",
        "type": "string"
      },
      "value": {
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  },
  "target_cups_uri": {
    "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "update_channel": {
    "type": "string"
  },
  "update_location_from_status": {
    "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
    "type": "boolean"
  },
  "updated_at": {
    "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      },
      "runtime_version": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gateways/{gateway_ids.gateway_id}

Get the gateway with the given identifiers, selecting the fields specified in the field mask.

Expand Collapse

More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "alert_notification_profile_ids": {
    "properties": {
      "profile_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "antennas": {
    "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
    "items": {
      "description": "GatewayAntenna is the message that defines a gateway antenna.",
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "gain": {
          "description": "Antenna gain relative to the gateway, in dBi.",
          "format": "float",
          "type": "number"
        },
        "location": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "placement": {
          "default": "PLACEMENT_UNKNOWN",
          "enum": [
            "PLACEMENT_UNKNOWN",
            "INDOOR",
            "OUTDOOR"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
    "type": "object"
  },
  "auto_update": {
    "type": "boolean"
  },
  "claim_authentication_code": {
    "description": "Authentication code for claiming gateways.",
    "properties": {
      "secret": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "disable_packet_broker_forwarding": {
    "type": "boolean"
  },
  "downlink_path_constraint": {
    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
    "enum": [
      "DOWNLINK_PATH_CONSTRAINT_NONE",
      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
      "DOWNLINK_PATH_CONSTRAINT_NEVER"
    ],
    "type": "string"
  },
  "enforce_duty_cycle": {
    "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
    "type": "boolean"
  },
  "frequency_plan_id": {
    "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
    "type": "string"
  },
  "frequency_plan_ids": {
    "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "gateway_server_address": {
    "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "gateway_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "title": "next: 34",
    "type": "array"
  },
  "lbs_lns_secret": {
    "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
    "properties": {
      "key_id": {
        "description": "ID of the Key used to encrypt the secret.",
        "type": "string"
      },
      "value": {
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_public": {
    "description": "The location of this gateway may be publicly displayed.",
    "type": "boolean"
  },
  "lrfhss": {
    "description": "LR-FHSS gateway capabilities.",
    "properties": {
      "supported": {
        "description": "The gateway supports the LR-FHSS uplink channels.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "require_authenticated_connection": {
    "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
    "type": "boolean"
  },
  "schedule_anytime_delay": {
    "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
    "type": "string"
  },
  "schedule_downlink_late": {
    "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
    "type": "boolean"
  },
  "status_public": {
    "description": "The status of this gateway may be publicly displayed.",
    "type": "boolean"
  },
  "target_cups_key": {
    "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
    "properties": {
      "key_id": {
        "description": "ID of the Key used to encrypt the secret.",
        "type": "string"
      },
      "value": {
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  },
  "target_cups_uri": {
    "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "update_channel": {
    "type": "string"
  },
  "update_location_from_status": {
    "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
    "type": "boolean"
  },
  "updated_at": {
    "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      },
      "runtime_version": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gateways/{gateway_id}

Delete the gateway.

Expand Collapse

This may not release the gateway ID for reuse, but it does release the EUI.

Request Parameters
Field Type Required Description
gateway_id string true
eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gateways/{gateway_id}/purge

Purge the gateway.

Expand Collapse

This will release both gateway ID and EUI for reuse. The gateway owner is responsible for clearing data from any (external) integrations that may store and expose data by gateway ID.

Request Parameters
Field Type Required Description
gateway_id string true
eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gateways/{gateway_id}/restore

Restore a recently deleted gateway.

Expand Collapse

This does not restore the EUI, as that was released when deleting the gateway.

Request Parameters
Field Type Required Description
gateway_id string true
eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/organizations/{collaborator.organization_ids.organization_id}/gateways

List gateways where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the gateways the caller has access to. Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted gateways.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "gateways": {
    "items": {
      "description": "Gateway is the message that defines a gateway on the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "alert_notification_profile_ids": {
          "properties": {
            "profile_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "antennas": {
          "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
          "items": {
            "description": "GatewayAntenna is the message that defines a gateway antenna.",
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "gain": {
                "description": "Antenna gain relative to the gateway, in dBi.",
                "format": "float",
                "type": "number"
              },
              "location": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "placement": {
                "default": "PLACEMENT_UNKNOWN",
                "enum": [
                  "PLACEMENT_UNKNOWN",
                  "INDOOR",
                  "OUTDOOR"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
          "type": "object"
        },
        "auto_update": {
          "type": "boolean"
        },
        "claim_authentication_code": {
          "description": "Authentication code for claiming gateways.",
          "properties": {
            "secret": {
              "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
              "properties": {
                "key_id": {
                  "description": "ID of the Key used to encrypt the secret.",
                  "type": "string"
                },
                "value": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "valid_from": {
              "format": "date-time",
              "type": "string"
            },
            "valid_to": {
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "disable_packet_broker_forwarding": {
          "type": "boolean"
        },
        "downlink_path_constraint": {
          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
          "enum": [
            "DOWNLINK_PATH_CONSTRAINT_NONE",
            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
            "DOWNLINK_PATH_CONSTRAINT_NEVER"
          ],
          "type": "string"
        },
        "enforce_duty_cycle": {
          "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
          "type": "boolean"
        },
        "frequency_plan_id": {
          "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
          "type": "string"
        },
        "frequency_plan_ids": {
          "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "gateway_server_address": {
          "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "title": "next: 34",
          "type": "array"
        },
        "lbs_lns_secret": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "location_public": {
          "description": "The location of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "lrfhss": {
          "description": "LR-FHSS gateway capabilities.",
          "properties": {
            "supported": {
              "description": "The gateway supports the LR-FHSS uplink channels.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "require_authenticated_connection": {
          "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
          "type": "boolean"
        },
        "schedule_anytime_delay": {
          "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
          "type": "string"
        },
        "schedule_downlink_late": {
          "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
          "type": "boolean"
        },
        "status_public": {
          "description": "The status of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "target_cups_key": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "target_cups_uri": {
          "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "update_channel": {
          "type": "string"
        },
        "update_location_from_status": {
          "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
          "type": "boolean"
        },
        "updated_at": {
          "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            },
            "runtime_version": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/organizations/{collaborator.organization_ids.organization_id}/gateways

Create a new gateway.

Expand Collapse

This also sets the given organization or user as first collaborator with all possible rights.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "Collaborator to grant all rights on the newly created gateway.",
    "properties": {
      "organization_ids": {
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "title": "Collaborator to grant all rights on the newly created gateway.",
    "type": "object"
  },
  "gateway": {
    "description": "Gateway is the message that defines a gateway on the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "alert_notification_profile_ids": {
        "properties": {
          "profile_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "antennas": {
        "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
        "items": {
          "description": "GatewayAntenna is the message that defines a gateway antenna.",
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "gain": {
              "description": "Antenna gain relative to the gateway, in dBi.",
              "format": "float",
              "type": "number"
            },
            "location": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "placement": {
              "default": "PLACEMENT_UNKNOWN",
              "enum": [
                "PLACEMENT_UNKNOWN",
                "INDOOR",
                "OUTDOOR"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
        "type": "object"
      },
      "auto_update": {
        "type": "boolean"
      },
      "claim_authentication_code": {
        "description": "Authentication code for claiming gateways.",
        "properties": {
          "secret": {
            "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
            "properties": {
              "key_id": {
                "description": "ID of the Key used to encrypt the secret.",
                "type": "string"
              },
              "value": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "disable_packet_broker_forwarding": {
        "type": "boolean"
      },
      "downlink_path_constraint": {
        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
        "enum": [
          "DOWNLINK_PATH_CONSTRAINT_NONE",
          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
          "DOWNLINK_PATH_CONSTRAINT_NEVER"
        ],
        "type": "string"
      },
      "enforce_duty_cycle": {
        "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
        "type": "boolean"
      },
      "frequency_plan_id": {
        "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
        "type": "string"
      },
      "frequency_plan_ids": {
        "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "gateway_server_address": {
        "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "gateway_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "title": "next: 34",
        "type": "array"
      },
      "lbs_lns_secret": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "location_public": {
        "description": "The location of this gateway may be publicly displayed.",
        "type": "boolean"
      },
      "lrfhss": {
        "description": "LR-FHSS gateway capabilities.",
        "properties": {
          "supported": {
            "description": "The gateway supports the LR-FHSS uplink channels.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "name": {
        "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "require_authenticated_connection": {
        "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
        "type": "boolean"
      },
      "schedule_anytime_delay": {
        "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
        "type": "string"
      },
      "schedule_downlink_late": {
        "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
        "type": "boolean"
      },
      "status_public": {
        "description": "The status of this gateway may be publicly displayed.",
        "type": "boolean"
      },
      "target_cups_key": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "target_cups_uri": {
        "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "update_channel": {
        "type": "string"
      },
      "update_location_from_status": {
        "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
        "type": "boolean"
      },
      "updated_at": {
        "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          },
          "runtime_version": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "alert_notification_profile_ids": {
    "properties": {
      "profile_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "antennas": {
    "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
    "items": {
      "description": "GatewayAntenna is the message that defines a gateway antenna.",
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "gain": {
          "description": "Antenna gain relative to the gateway, in dBi.",
          "format": "float",
          "type": "number"
        },
        "location": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "placement": {
          "default": "PLACEMENT_UNKNOWN",
          "enum": [
            "PLACEMENT_UNKNOWN",
            "INDOOR",
            "OUTDOOR"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
    "type": "object"
  },
  "auto_update": {
    "type": "boolean"
  },
  "claim_authentication_code": {
    "description": "Authentication code for claiming gateways.",
    "properties": {
      "secret": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "disable_packet_broker_forwarding": {
    "type": "boolean"
  },
  "downlink_path_constraint": {
    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
    "enum": [
      "DOWNLINK_PATH_CONSTRAINT_NONE",
      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
      "DOWNLINK_PATH_CONSTRAINT_NEVER"
    ],
    "type": "string"
  },
  "enforce_duty_cycle": {
    "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
    "type": "boolean"
  },
  "frequency_plan_id": {
    "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
    "type": "string"
  },
  "frequency_plan_ids": {
    "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "gateway_server_address": {
    "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "gateway_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "title": "next: 34",
    "type": "array"
  },
  "lbs_lns_secret": {
    "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
    "properties": {
      "key_id": {
        "description": "ID of the Key used to encrypt the secret.",
        "type": "string"
      },
      "value": {
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_public": {
    "description": "The location of this gateway may be publicly displayed.",
    "type": "boolean"
  },
  "lrfhss": {
    "description": "LR-FHSS gateway capabilities.",
    "properties": {
      "supported": {
        "description": "The gateway supports the LR-FHSS uplink channels.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "require_authenticated_connection": {
    "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
    "type": "boolean"
  },
  "schedule_anytime_delay": {
    "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
    "type": "string"
  },
  "schedule_downlink_late": {
    "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
    "type": "boolean"
  },
  "status_public": {
    "description": "The status of this gateway may be publicly displayed.",
    "type": "boolean"
  },
  "target_cups_key": {
    "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
    "properties": {
      "key_id": {
        "description": "ID of the Key used to encrypt the secret.",
        "type": "string"
      },
      "value": {
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  },
  "target_cups_uri": {
    "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "update_channel": {
    "type": "string"
  },
  "update_location_from_status": {
    "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
    "type": "boolean"
  },
  "updated_at": {
    "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      },
      "runtime_version": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/users/{collaborator.user_ids.user_id}/gateways

List gateways where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the gateways the caller has access to. Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the gateway fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted gateways.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "gateways": {
    "items": {
      "description": "Gateway is the message that defines a gateway on the network.",
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "alert_notification_profile_ids": {
          "properties": {
            "profile_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "antennas": {
          "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
          "items": {
            "description": "GatewayAntenna is the message that defines a gateway antenna.",
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "gain": {
                "description": "Antenna gain relative to the gateway, in dBi.",
                "format": "float",
                "type": "number"
              },
              "location": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "placement": {
                "default": "PLACEMENT_UNKNOWN",
                "enum": [
                  "PLACEMENT_UNKNOWN",
                  "INDOOR",
                  "OUTDOOR"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
          "type": "object"
        },
        "auto_update": {
          "type": "boolean"
        },
        "claim_authentication_code": {
          "description": "Authentication code for claiming gateways.",
          "properties": {
            "secret": {
              "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
              "properties": {
                "key_id": {
                  "description": "ID of the Key used to encrypt the secret.",
                  "type": "string"
                },
                "value": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "valid_from": {
              "format": "date-time",
              "type": "string"
            },
            "valid_to": {
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "disable_packet_broker_forwarding": {
          "type": "boolean"
        },
        "downlink_path_constraint": {
          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
          "enum": [
            "DOWNLINK_PATH_CONSTRAINT_NONE",
            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
            "DOWNLINK_PATH_CONSTRAINT_NEVER"
          ],
          "type": "string"
        },
        "enforce_duty_cycle": {
          "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
          "type": "boolean"
        },
        "frequency_plan_id": {
          "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
          "type": "string"
        },
        "frequency_plan_ids": {
          "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "gateway_server_address": {
          "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "eui": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "gateway_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "title": "next: 34",
          "type": "array"
        },
        "lbs_lns_secret": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "location_public": {
          "description": "The location of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "lrfhss": {
          "description": "LR-FHSS gateway capabilities.",
          "properties": {
            "supported": {
              "description": "The gateway supports the LR-FHSS uplink channels.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "require_authenticated_connection": {
          "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
          "type": "boolean"
        },
        "schedule_anytime_delay": {
          "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
          "type": "string"
        },
        "schedule_downlink_late": {
          "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
          "type": "boolean"
        },
        "status_public": {
          "description": "The status of this gateway may be publicly displayed.",
          "type": "boolean"
        },
        "target_cups_key": {
          "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
          "properties": {
            "key_id": {
              "description": "ID of the Key used to encrypt the secret.",
              "type": "string"
            },
            "value": {
              "format": "byte",
              "type": "string"
            }
          },
          "type": "object"
        },
        "target_cups_uri": {
          "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "update_channel": {
          "type": "string"
        },
        "update_location_from_status": {
          "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
          "type": "boolean"
        },
        "updated_at": {
          "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            },
            "runtime_version": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users/{collaborator.user_ids.user_id}/gateways

Create a new gateway.

Expand Collapse

This also sets the given organization or user as first collaborator with all possible rights.

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "Collaborator to grant all rights on the newly created gateway.",
    "properties": {
      "organization_ids": {
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "title": "Collaborator to grant all rights on the newly created gateway.",
    "type": "object"
  },
  "gateway": {
    "description": "Gateway is the message that defines a gateway on the network.",
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "alert_notification_profile_ids": {
        "properties": {
          "profile_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "antennas": {
        "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
        "items": {
          "description": "GatewayAntenna is the message that defines a gateway antenna.",
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "gain": {
              "description": "Antenna gain relative to the gateway, in dBi.",
              "format": "float",
              "type": "number"
            },
            "location": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "placement": {
              "default": "PLACEMENT_UNKNOWN",
              "enum": [
                "PLACEMENT_UNKNOWN",
                "INDOOR",
                "OUTDOOR"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
        "type": "object"
      },
      "auto_update": {
        "type": "boolean"
      },
      "claim_authentication_code": {
        "description": "Authentication code for claiming gateways.",
        "properties": {
          "secret": {
            "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
            "properties": {
              "key_id": {
                "description": "ID of the Key used to encrypt the secret.",
                "type": "string"
              },
              "value": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "disable_packet_broker_forwarding": {
        "type": "boolean"
      },
      "downlink_path_constraint": {
        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
        "enum": [
          "DOWNLINK_PATH_CONSTRAINT_NONE",
          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
          "DOWNLINK_PATH_CONSTRAINT_NEVER"
        ],
        "type": "string"
      },
      "enforce_duty_cycle": {
        "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
        "type": "boolean"
      },
      "frequency_plan_id": {
        "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
        "type": "string"
      },
      "frequency_plan_ids": {
        "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "gateway_server_address": {
        "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "gateway_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "title": "next: 34",
        "type": "array"
      },
      "lbs_lns_secret": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "location_public": {
        "description": "The location of this gateway may be publicly displayed.",
        "type": "boolean"
      },
      "lrfhss": {
        "description": "LR-FHSS gateway capabilities.",
        "properties": {
          "supported": {
            "description": "The gateway supports the LR-FHSS uplink channels.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "name": {
        "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "require_authenticated_connection": {
        "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
        "type": "boolean"
      },
      "schedule_anytime_delay": {
        "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
        "type": "string"
      },
      "schedule_downlink_late": {
        "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
        "type": "boolean"
      },
      "status_public": {
        "description": "The status of this gateway may be publicly displayed.",
        "type": "boolean"
      },
      "target_cups_key": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "target_cups_uri": {
        "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "update_channel": {
        "type": "string"
      },
      "update_location_from_status": {
        "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
        "type": "boolean"
      },
      "updated_at": {
        "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          },
          "runtime_version": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "alert_notification_profile_ids": {
    "properties": {
      "profile_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "antennas": {
    "description": "Antennas of the gateway. Location information of the antennas is public and can be seen by any authenticated user in the network if location_public=true.",
    "items": {
      "description": "GatewayAntenna is the message that defines a gateway antenna.",
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "gain": {
          "description": "Antenna gain relative to the gateway, in dBi.",
          "format": "float",
          "type": "number"
        },
        "location": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "placement": {
          "default": "PLACEMENT_UNKNOWN",
          "enum": [
            "PLACEMENT_UNKNOWN",
            "INDOOR",
            "OUTDOOR"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this gateway. Typically used for organizing gateways or for storing integration-specific data.",
    "type": "object"
  },
  "auto_update": {
    "type": "boolean"
  },
  "claim_authentication_code": {
    "description": "Authentication code for claiming gateways.",
    "properties": {
      "secret": {
        "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
        "properties": {
          "key_id": {
            "description": "ID of the Key used to encrypt the secret.",
            "type": "string"
          },
          "value": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this gateway. Typically used to indicate who to contact with technical/security questions about the gateway.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the gateway was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the gateway was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the gateway. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "disable_packet_broker_forwarding": {
    "type": "boolean"
  },
  "downlink_path_constraint": {
    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
    "enum": [
      "DOWNLINK_PATH_CONSTRAINT_NONE",
      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
      "DOWNLINK_PATH_CONSTRAINT_NEVER"
    ],
    "type": "string"
  },
  "enforce_duty_cycle": {
    "description": "Enforcing gateway duty cycle is recommended for all gateways to respect spectrum regulations. Disable enforcing the\nduty cycle only in controlled research and development environments.",
    "type": "boolean"
  },
  "frequency_plan_id": {
    "description": "Frequency plan ID of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nDEPRECATED: use frequency_plan_ids.\nThis equals the first element of the frequency_plan_ids field.",
    "type": "string"
  },
  "frequency_plan_ids": {
    "description": "Frequency plan IDs of the gateway.\nThis information is public and can be seen by any authenticated user in the network.\nThe first element equals the frequency_plan_id field.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "gateway_server_address": {
    "description": "The address of the Gateway Server to connect to.\nThis information is public and can be seen by any authenticated user in the network if status_public is true.\nThe typical format of the address is \"scheme://host:port\". The scheme is optional. If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "gateway_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "title": "next: 34",
    "type": "array"
  },
  "lbs_lns_secret": {
    "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
    "properties": {
      "key_id": {
        "description": "ID of the Key used to encrypt the secret.",
        "type": "string"
      },
      "value": {
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  },
  "location_public": {
    "description": "The location of this gateway may be publicly displayed.",
    "type": "boolean"
  },
  "lrfhss": {
    "description": "LR-FHSS gateway capabilities.",
    "properties": {
      "supported": {
        "description": "The gateway supports the LR-FHSS uplink channels.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the gateway. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "require_authenticated_connection": {
    "description": "Require an authenticated gateway connection. This prevents the gateway from using the UDP protocol and requires authentication when using other protocols.",
    "type": "boolean"
  },
  "schedule_anytime_delay": {
    "description": "Adjust the time that GS schedules class C messages in advance. This is useful for gateways that have a known high latency backhaul, like 3G and satellite.",
    "type": "string"
  },
  "schedule_downlink_late": {
    "description": "Enable server-side buffering of downlink messages. This is recommended for gateways using the Semtech UDP Packet\nForwarder v2.x or older, as it does not feature a just-in-time queue. If enabled, the Gateway Server schedules the\ndownlink message late to the gateway so that it does not overwrite previously scheduled downlink messages that have\nnot been transmitted yet.",
    "type": "boolean"
  },
  "status_public": {
    "description": "The status of this gateway may be publicly displayed.",
    "type": "boolean"
  },
  "target_cups_key": {
    "description": "Secret contains a secret value. It also contains the ID of the Encryption key used to encrypt it.",
    "properties": {
      "key_id": {
        "description": "ID of the Key used to encrypt the secret.",
        "type": "string"
      },
      "value": {
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  },
  "target_cups_uri": {
    "description": "CUPS URI for LoRa Basics Station CUPS redirection.\nThe CUPS Trust field will be automatically fetched from the cert chain presented by the target server.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "update_channel": {
    "type": "string"
  },
  "update_location_from_status": {
    "description": "Update the location of this gateway from status messages. This only works for gateways connecting with authentication; gateways connected over UDP are not supported.",
    "type": "boolean"
  },
  "updated_at": {
    "description": "When the gateway was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      },
      "runtime_version": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

GatewayAccess

Manage access to gateways.

Expand Collapse

get

/gateways/{gateway_ids.gateway_id}/api-keys

List the API keys for this gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
order string Order the results by this field path. Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "api_keys": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "expires_at": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
          "type": "string"
        },
        "key": {
          "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
          "type": "string"
        },
        "name": {
          "description": "User-defined (friendly) name for the API key.",
          "type": "string"
        },
        "rights": {
          "description": "Rights that are granted to this API key.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/gateways/{gateway_ids.gateway_id}/api-keys

Create an API key scoped to this gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "type": "string"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/gateways/{gateway_ids.gateway_id}/api-keys/{api_key.id}

Update the rights of an API key of the gateway.

Expand Collapse

This method can also be used to delete the API key, by giving it no rights. The caller is required to have all assigned or/and removed rights.

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
api_key.id string true Immutable and unique public identifier for the API key. Generated by the Access Server.
Request Body
Show JSON Schema
{
  "api_key": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "expires_at": {
        "format": "date-time",
        "type": "string"
      },
      "key": {
        "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
        "type": "string"
      },
      "name": {
        "description": "User-defined (friendly) name for the API key.",
        "type": "string"
      },
      "rights": {
        "description": "Rights that are granted to this API key.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the api key fields that should be updated.",
    "type": "string"
  },
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gateways/{gateway_ids.gateway_id}/api-keys/{key_id}

Delete a single API key of this gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
key_id string true
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gateways/{gateway_ids.gateway_id}/api-keys/{key_id}

Get a single API key of this gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
key_id string true Unique public identifier for the API key.
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gateways/{gateway_ids.gateway_id}/collaborator/organization/{collaborator.organization_ids.organization_id}

Get the rights of a collaborator (member) of the gateway.

Expand Collapse

Pseudo-rights in the response (such as the "_ALL" right) are not expanded.

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
collaborator.organization_ids.organization_id string true This ID shares namespace with user IDs.
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "ids": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gateways/{gateway_ids.gateway_id}/collaborator/user/{collaborator.user_ids.user_id}

Get the rights of a collaborator (member) of the gateway.

Expand Collapse

Pseudo-rights in the response (such as the "_ALL" right) are not expanded.

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "ids": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gateways/{gateway_ids.gateway_id}/collaborators

List the collaborators on this gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "collaborators": {
    "items": {
      "properties": {
        "ids": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "rights": {
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/gateways/{gateway_ids.gateway_id}/collaborators

Set the rights of a collaborator (member) on the gateway.

Expand Collapse

This method can also be used to delete the collaborator, by giving them no rights. The caller is required to have all assigned or/and removed rights.

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
Request Body
Show JSON Schema
{
  "collaborator": {
    "properties": {
      "ids": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "rights": {
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "gateway_ids": {
    "properties": {
      "eui": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gateways/{gateway_ids.gateway_id}/collaborators/organization/{collaborator_ids.organization_ids.organization_id}

DeleteCollaborator removes a collaborator from a gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
collaborator_ids.organization_ids.organization_id string true This ID shares namespace with user IDs.
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
collaborator_ids.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/gateways/{gateway_ids.gateway_id}/collaborators/user/{collaborator_ids.user_ids.user_id}

DeleteCollaborator removes a collaborator from a gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_ids.gateway_id string true
collaborator_ids.user_ids.user_id string true This ID shares namespace with organization IDs.
gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
collaborator_ids.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gateways/{gateway_id}/rights

List the rights the caller has on this gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_id string true
eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

GatewayBatchAccess

Manage access to batches of gateways.

Expand Collapse

get

/gateways/rights/batch

Assert that the caller has the requested rights on all the requested gateways.

Expand Collapse

The check is successful if there are no errors.

Request Parameters
Field Type Required Description
required.rights array - RIGHT_USER_INFO: The right to view user information. - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings. - RIGHT_USER_LIST: The right to list users accounts. - RIGHT_USER_CREATE: The right to create an user account. - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys. - RIGHT_USER_DELETE: The right to delete user account. - RIGHT_USER_PURGE: The right to purge user account. - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user. - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of. - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account. - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of. - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user. - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of. - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user. - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of. - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account. - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user. - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights. - RIGHT_APPLICATION_INFO: The right to view application information. - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings. - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys. - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators. - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations. - RIGHT_APPLICATION_DELETE: The right to delete application. - RIGHT_APPLICATION_PURGE: The right to purge application. - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application. - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application. - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application. Note that keys may not be stored in a way that supports viewing them. - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application. - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink). - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic. - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic. - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange, i.e. read uplink and write downlink (API keys only). This right is typically only given to an Application Server. This right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ, and RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE. - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights. - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights. - RIGHT_CLIENT_INFO: The right to read client information. - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings. - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators. - RIGHT_CLIENT_DELETE: The right to delete a client. - RIGHT_CLIENT_PURGE: The right to purge a client. - RIGHT_GATEWAY_INFO: The right to view gateway information. - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings. - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys. - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators. - RIGHT_GATEWAY_DELETE: The right to delete gateway. - RIGHT_GATEWAY_PURGE: The right to purge gateway. - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic. - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic. - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange, i.e. write uplink and read downlink (API keys only) This right is typically only given to a gateway. This right implies RIGHT_GATEWAY_INFO. - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status. - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location. - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway. - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway. - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights. - RIGHT_ORGANIZATION_INFO: The right to view organization information. - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings. - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys. - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members. - RIGHT_ORGANIZATION_DELETE: The right to delete organization. - RIGHT_ORGANIZATION_PURGE: The right to purge organization. - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of. - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization. - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of. - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization. - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of. - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization. - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity. - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights. - RIGHT_SEND_INVITES: The right to send invites to new users. Note that this is not prefixed with "USER_"; it is not a right on the user entity. - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile. - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information. - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles. - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles. - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles. - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver. - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information. - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers. - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers. - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers. - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider. - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information. - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers. - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers. - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user. - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information. - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user. - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA. - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA. - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration. - RIGHT_LABEL_CREATE: The right to create a label. - RIGHT_LABEL_INFO: The right to view a label's information. - RIGHT_LABELS_LIST: The right to list the labels. - RIGHT_LABEL_UPDATE: The right to update a label. - RIGHT_LABEL_DELETE: The right to delete a label. - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity. - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

GatewayBatchRegistry

Manage batches of gateways.

Expand Collapse

delete

/gateways/batch

Delete a batch of gateways.

Expand Collapse

This operation is atomic; either all gateways are deleted or none. The caller must have delete rights on all requested gateways.

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

GtwGs

Connect a gRPC gateway to a The Things Stack Gateway Server.

Expand Collapse

get

/gs/gateways/{gateway_id}/mqtt-connection-info

Get connection information to connect an MQTT gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_id string true
eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "public_address": {
    "description": "The public listen address of the frontend.",
    "type": "string"
  },
  "public_tls_address": {
    "description": "The public listen address of the TLS frontend.",
    "type": "string"
  },
  "username": {
    "description": "The username to be used for authentication.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gs/gateways/{gateway_id}/mqttv2-connection-info

Get legacy connection information to connect a The Things Network Stack V2 MQTT gateway.

Expand Collapse

Request Parameters
Field Type Required Description
gateway_id string true
eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "public_address": {
    "description": "The public listen address of the frontend.",
    "type": "string"
  },
  "public_tls_address": {
    "description": "The public listen address of the TLS frontend.",
    "type": "string"
  },
  "username": {
    "description": "The username to be used for authentication.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

NsGs

The NsGs service connects a Network Server to a Gateway Server. This is an inter-component service and is not intended for end users.

Expand Collapse

Gs

Retrieve gateway connection statistics.

Expand Collapse

post

/gs/gateways/connection/stats

Get statistics about gateway connections to the Gateway Server of a batch of gateways.

Expand Collapse

- Statistics are not persisted between reconnects. - Gateways that are not connected or are part of a different cluster are ignored. - The client should ensure that the requested gateways are in the requested cluster. - The client should have the right to get the gateway connection stats on all requested gateways.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "field_mask": {
    "description": "The names of the gateway stats fields that should be returned.\nThis mask will be applied on each entry returned.",
    "type": "string"
  },
  "gateway_ids": {
    "items": {
      "properties": {
        "eui": {
          "description": "Secondary identifier, which can only be used in specific requests.",
          "example": "70B3D57ED000ABCD",
          "format": "string",
          "type": "string"
        },
        "gateway_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "entries": {
    "additionalProperties": {
      "description": "Connection stats as monitored by the Gateway Server.",
      "properties": {
        "connected_at": {
          "format": "date-time",
          "type": "string"
        },
        "disconnected_at": {
          "format": "date-time",
          "type": "string"
        },
        "downlink_count": {
          "format": "uint64",
          "type": "string"
        },
        "gateway_remote_address": {
          "description": "Remote Address of the Gateway, as seen by the Gateway Server.",
          "properties": {
            "ip": {
              "description": "IPv4 or IPv6 address.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "last_downlink_received_at": {
          "format": "date-time",
          "type": "string"
        },
        "last_status": {
          "properties": {
            "advanced": {
              "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
              "type": "object"
            },
            "antenna_locations": {
              "items": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "title": "Location of each gateway's antenna\n- if left out, server uses registry-set location as fallback",
              "type": "array"
            },
            "boot_time": {
              "format": "date-time",
              "title": "Boot time of the gateway\n- can be left out to save bandwidth; old value will be kept",
              "type": "string"
            },
            "ip": {
              "description": "IP addresses of this gateway.\nRepeated addresses can be used to communicate addresses of multiple interfaces (LAN, Public IP, ...).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "metrics": {
              "additionalProperties": {
                "format": "float",
                "type": "number"
              },
              "title": "Metrics\n- can be used for forwarding gateway metrics such as temperatures or performance metrics\n- map keys are written in snake_case",
              "type": "object"
            },
            "time": {
              "format": "date-time",
              "title": "Current time of the gateway",
              "type": "string"
            },
            "versions": {
              "additionalProperties": {
                "type": "string"
              },
              "title": "Versions of gateway subsystems\n- each field can be left out to save bandwidth; old value will be kept\n- map keys are written in snake_case\n- for example:\n    firmware: \"2.0.4\"\n    forwarder: \"v2-3.3.1\"\n    fpga: \"48\"\n    dsp: \"27\"\n    hal: \"v2-3.5.0\"",
              "type": "object"
            }
          },
          "type": "object"
        },
        "last_status_received_at": {
          "format": "date-time",
          "type": "string"
        },
        "last_tx_acknowledgment_received_at": {
          "format": "date-time",
          "type": "string"
        },
        "last_uplink_received_at": {
          "format": "date-time",
          "type": "string"
        },
        "protocol": {
          "title": "Protocol used to connect (for example, udp, mqtt, grpc)",
          "type": "string"
        },
        "round_trip_times": {
          "properties": {
            "count": {
              "format": "int64",
              "type": "integer"
            },
            "max": {
              "type": "string"
            },
            "median": {
              "type": "string"
            },
            "min": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "sub_bands": {
          "description": "Statistics for each sub band.",
          "items": {
            "properties": {
              "downlink_utilization": {
                "description": "Utilization rate of the available duty-cycle. This value should not exceed downlink_utilization_limit.",
                "format": "float",
                "type": "number"
              },
              "downlink_utilization_limit": {
                "description": "Duty-cycle limit of the sub-band as a fraction of time.",
                "format": "float",
                "type": "number"
              },
              "max_frequency": {
                "format": "uint64",
                "type": "string"
              },
              "min_frequency": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "tx_acknowledgment_count": {
          "format": "uint64",
          "type": "string"
        },
        "uplink_count": {
          "format": "uint64",
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "The map key is the gateway identifier.",
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/gs/gateways/{gateway_id}/connection/stats

Get statistics about the current gateway connection to the Gateway Server.

Expand Collapse

This is not persisted between reconnects.

Request Parameters
Field Type Required Description
gateway_id string true
eui string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "connected_at": {
    "format": "date-time",
    "type": "string"
  },
  "disconnected_at": {
    "format": "date-time",
    "type": "string"
  },
  "downlink_count": {
    "format": "uint64",
    "type": "string"
  },
  "gateway_remote_address": {
    "description": "Remote Address of the Gateway, as seen by the Gateway Server.",
    "properties": {
      "ip": {
        "description": "IPv4 or IPv6 address.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "last_downlink_received_at": {
    "format": "date-time",
    "type": "string"
  },
  "last_status": {
    "properties": {
      "advanced": {
        "title": "Advanced metadata fields\n- can be used for advanced information or experimental features that are not yet formally defined in the API\n- field names are written in snake_case",
        "type": "object"
      },
      "antenna_locations": {
        "items": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "title": "Location of each gateway's antenna\n- if left out, server uses registry-set location as fallback",
        "type": "array"
      },
      "boot_time": {
        "format": "date-time",
        "title": "Boot time of the gateway\n- can be left out to save bandwidth; old value will be kept",
        "type": "string"
      },
      "ip": {
        "description": "IP addresses of this gateway.\nRepeated addresses can be used to communicate addresses of multiple interfaces (LAN, Public IP, ...).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "metrics": {
        "additionalProperties": {
          "format": "float",
          "type": "number"
        },
        "title": "Metrics\n- can be used for forwarding gateway metrics such as temperatures or performance metrics\n- map keys are written in snake_case",
        "type": "object"
      },
      "time": {
        "format": "date-time",
        "title": "Current time of the gateway",
        "type": "string"
      },
      "versions": {
        "additionalProperties": {
          "type": "string"
        },
        "title": "Versions of gateway subsystems\n- each field can be left out to save bandwidth; old value will be kept\n- map keys are written in snake_case\n- for example:\n    firmware: \"2.0.4\"\n    forwarder: \"v2-3.3.1\"\n    fpga: \"48\"\n    dsp: \"27\"\n    hal: \"v2-3.5.0\"",
        "type": "object"
      }
    },
    "type": "object"
  },
  "last_status_received_at": {
    "format": "date-time",
    "type": "string"
  },
  "last_tx_acknowledgment_received_at": {
    "format": "date-time",
    "type": "string"
  },
  "last_uplink_received_at": {
    "format": "date-time",
    "type": "string"
  },
  "protocol": {
    "title": "Protocol used to connect (for example, udp, mqtt, grpc)",
    "type": "string"
  },
  "round_trip_times": {
    "properties": {
      "count": {
        "format": "int64",
        "type": "integer"
      },
      "max": {
        "type": "string"
      },
      "median": {
        "type": "string"
      },
      "min": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "sub_bands": {
    "description": "Statistics for each sub band.",
    "items": {
      "properties": {
        "downlink_utilization": {
          "description": "Utilization rate of the available duty-cycle. This value should not exceed downlink_utilization_limit.",
          "format": "float",
          "type": "number"
        },
        "downlink_utilization_limit": {
          "description": "Duty-cycle limit of the sub-band as a fraction of time.",
          "format": "float",
          "type": "number"
        },
        "max_frequency": {
          "format": "uint64",
          "type": "string"
        },
        "min_frequency": {
          "format": "uint64",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "tx_acknowledgment_count": {
    "format": "uint64",
    "type": "string"
  },
  "uplink_count": {
    "format": "uint64",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EntityAccess

Check the access rights for an entity.

Expand Collapse

get

/auth_info

AuthInfo returns information about the authentication that is used on the request.

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "api_key": {
    "properties": {
      "api_key": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
            "type": "string"
          },
          "key": {
            "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
            "type": "string"
          },
          "name": {
            "description": "User-defined (friendly) name for the API key.",
            "type": "string"
          },
          "rights": {
            "description": "Rights that are granted to this API key.",
            "items": {
              "default": "right_invalid",
              "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
              "enum": [
                "right_invalid",
                "RIGHT_USER_INFO",
                "RIGHT_USER_SETTINGS_BASIC",
                "RIGHT_USER_LIST",
                "RIGHT_USER_CREATE",
                "RIGHT_USER_SETTINGS_API_KEYS",
                "RIGHT_USER_DELETE",
                "RIGHT_USER_PURGE",
                "RIGHT_USER_AUTHORIZED_CLIENTS",
                "RIGHT_USER_APPLICATIONS_LIST",
                "RIGHT_USER_APPLICATIONS_CREATE",
                "RIGHT_USER_GATEWAYS_LIST",
                "RIGHT_USER_GATEWAYS_CREATE",
                "RIGHT_USER_CLIENTS_LIST",
                "RIGHT_USER_CLIENTS_CREATE",
                "RIGHT_USER_ORGANIZATIONS_LIST",
                "RIGHT_USER_ORGANIZATIONS_CREATE",
                "RIGHT_USER_NOTIFICATIONS_READ",
                "RIGHT_USER_ALL",
                "RIGHT_APPLICATION_INFO",
                "RIGHT_APPLICATION_SETTINGS_BASIC",
                "RIGHT_APPLICATION_SETTINGS_API_KEYS",
                "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
                "RIGHT_APPLICATION_SETTINGS_PACKAGES",
                "RIGHT_APPLICATION_DELETE",
                "RIGHT_APPLICATION_PURGE",
                "RIGHT_APPLICATION_DEVICES_READ",
                "RIGHT_APPLICATION_DEVICES_WRITE",
                "RIGHT_APPLICATION_DEVICES_READ_KEYS",
                "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
                "RIGHT_APPLICATION_TRAFFIC_READ",
                "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
                "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
                "RIGHT_APPLICATION_LINK",
                "RIGHT_APPLICATION_ALL",
                "RIGHT_CLIENT_ALL",
                "RIGHT_CLIENT_INFO",
                "RIGHT_CLIENT_SETTINGS_BASIC",
                "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
                "RIGHT_CLIENT_DELETE",
                "RIGHT_CLIENT_PURGE",
                "RIGHT_GATEWAY_INFO",
                "RIGHT_GATEWAY_SETTINGS_BASIC",
                "RIGHT_GATEWAY_SETTINGS_API_KEYS",
                "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
                "RIGHT_GATEWAY_DELETE",
                "RIGHT_GATEWAY_PURGE",
                "RIGHT_GATEWAY_TRAFFIC_READ",
                "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
                "RIGHT_GATEWAY_LINK",
                "RIGHT_GATEWAY_STATUS_READ",
                "RIGHT_GATEWAY_LOCATION_READ",
                "RIGHT_GATEWAY_WRITE_SECRETS",
                "RIGHT_GATEWAY_READ_SECRETS",
                "RIGHT_GATEWAY_ALL",
                "RIGHT_ORGANIZATION_INFO",
                "RIGHT_ORGANIZATION_SETTINGS_BASIC",
                "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
                "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
                "RIGHT_ORGANIZATION_DELETE",
                "RIGHT_ORGANIZATION_PURGE",
                "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
                "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
                "RIGHT_ORGANIZATION_GATEWAYS_LIST",
                "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
                "RIGHT_ORGANIZATION_CLIENTS_LIST",
                "RIGHT_ORGANIZATION_CLIENTS_CREATE",
                "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
                "RIGHT_ORGANIZATION_ALL",
                "RIGHT_SEND_INVITES",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
                "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
                "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
                "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
                "RIGHT_AUTHENTICATION_PROVIDER_INFO",
                "RIGHT_AUTHENTICATION_PROVIDER_LIST",
                "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
                "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
                "RIGHT_EXTERNAL_USER_CREATE",
                "RIGHT_EXTERNAL_USER_INFO",
                "RIGHT_EXTERNAL_USER_DELETE",
                "RIGHT_PACKET_BROKER_AGENT_READ",
                "RIGHT_PACKET_BROKER_AGENT_WRITE",
                "RIGHT_TENANT_CONFIGURATION_UPDATE",
                "RIGHT_LABEL_CREATE",
                "RIGHT_LABEL_INFO",
                "RIGHT_LABELS_LIST",
                "RIGHT_LABEL_UPDATE",
                "RIGHT_LABEL_DELETE",
                "RIGHT_LABEL_ASSIGN",
                "RIGHT_ALL"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "entity_ids": {
        "description": "EntityIdentifiers contains one of the possible entity identifiers.",
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "client_ids": {
            "properties": {
              "client_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "device_ids": {
            "properties": {
              "application_ids": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "dev_addr": {
                "description": "The LoRaWAN DevAddr.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "dev_eui": {
                "description": "The LoRaWAN DevEUI.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "device_id": {
                "type": "string"
              },
              "join_eui": {
                "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "gateway_ids": {
            "properties": {
              "eui": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "gateway_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "gateway_token": {
    "properties": {
      "gateway_ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "gateway_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "rights": {
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "is_admin": {
    "type": "boolean"
  },
  "oauth_access_token": {
    "properties": {
      "access_token": {
        "type": "string"
      },
      "client_ids": {
        "properties": {
          "client_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "expires_at": {
        "format": "date-time",
        "type": "string"
      },
      "id": {
        "type": "string"
      },
      "refresh_token": {
        "type": "string"
      },
      "rights": {
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_session_id": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "universal_rights": {
    "properties": {
      "rights": {
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "user_session": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "expires_at": {
        "format": "date-time",
        "type": "string"
      },
      "session_id": {
        "type": "string"
      },
      "session_secret": {
        "description": "The session secret is used to compose an authorization key and is never returned.",
        "type": "string"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

Is

Get information about The Things Stack Identity Server.

Expand Collapse

get

/is/configuration

Get the configuration of the Identity Server.

Expand Collapse

The response is typically used to enable or disable features in a user interface.

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "configuration": {
    "properties": {
      "admin_restrictions": {
        "properties": {
          "managed_fields_updates": {
            "description": "managed-fields-updates disables the ability of an admin user to update fields which are administered by the\nbilling providers. The restrictions are ignored if a tenant admin key is used.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "admin_rights": {
        "properties": {
          "all": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "application_limits": {
        "properties": {
          "end_devices": {
            "description": "The maximum number of end devices in a newly created application.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "collaborator_rights": {
        "properties": {
          "set_others_as_contacts": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "end_device_picture": {
        "properties": {
          "disable_upload": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "network_limits": {
        "properties": {
          "applications": {
            "description": "The maximum total number of applications in the network.",
            "format": "uint64",
            "type": "string"
          },
          "clients": {
            "description": "The maximum total number of clients in the network.",
            "format": "uint64",
            "type": "string"
          },
          "gateways": {
            "description": "The maximum total number of gateways in the network.",
            "format": "uint64",
            "type": "string"
          },
          "organizations": {
            "description": "The maximum total number of organizations in the network.",
            "format": "uint64",
            "type": "string"
          },
          "users": {
            "description": "The maximum total number of users in the network.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "organization_limits": {
        "properties": {
          "applications": {
            "description": "The maximum number of applications of a newly created organization.",
            "format": "uint64",
            "type": "string"
          },
          "clients": {
            "description": "The maximum number of clients of a newly created organization.",
            "format": "uint64",
            "type": "string"
          },
          "gateways": {
            "description": "The maximum number of gateways of a newly created organization.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_picture": {
        "properties": {
          "disable_upload": {
            "type": "boolean"
          },
          "use_gravatar": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "tenant_registration": {
        "properties": {
          "contact_info_validation": {
            "properties": {
              "token_ttl": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "user_limits": {
        "properties": {
          "applications": {
            "description": "The maximum number of applications of a newly created user.",
            "format": "uint64",
            "type": "string"
          },
          "clients": {
            "description": "The maximum number of clients of a newly created user.",
            "format": "uint64",
            "type": "string"
          },
          "gateways": {
            "description": "The maximum number of gateways of a newly created user.",
            "format": "uint64",
            "type": "string"
          },
          "organizations": {
            "description": "The maximum number of organizations of a newly created user.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_login": {
        "properties": {
          "disable_credentials_login": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "user_registration": {
        "properties": {
          "admin_approval": {
            "properties": {
              "required": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "contact_info_validation": {
            "properties": {
              "required": {
                "type": "boolean"
              },
              "retry_interval": {
                "description": "The minimum interval between validation emails.",
                "type": "string"
              },
              "token_ttl": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "enabled": {
            "type": "boolean"
          },
          "invitation": {
            "properties": {
              "required": {
                "type": "boolean"
              },
              "token_ttl": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "password_requirements": {
            "properties": {
              "max_length": {
                "format": "int64",
                "type": "integer"
              },
              "min_digits": {
                "format": "int64",
                "type": "integer"
              },
              "min_length": {
                "format": "int64",
                "type": "integer"
              },
              "min_special": {
                "format": "int64",
                "type": "integer"
              },
              "min_uppercase": {
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "user_rights": {
        "properties": {
          "create_applications": {
            "type": "boolean"
          },
          "create_clients": {
            "type": "boolean"
          },
          "create_gateways": {
            "type": "boolean"
          },
          "create_organizations": {
            "type": "boolean"
          },
          "update_name": {
            "type": "boolean"
          },
          "update_primary_email_address": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

NsJs

The NsJs service connects a Network Server to a Join Server. This is an inter-component service and is not intended to be used by end users.

Expand Collapse

AsJs

The AsJs service connects an Application Server to a Join Server. This is an inter-component service and is not intended to be used by end users.

Expand Collapse

AppJs

The AppJs service is used by an external AWS integration to connect to a Join Server instance.

Expand Collapse

NetworkCryptoService

The NetworkCryptoService supports network layer cryptographic operations. This service is not intended to be used by end users.

Expand Collapse

ApplicationCryptoService

The ApplicationCryptoService supports application layer cryptographic operations. This service is not intended to be used by end users.

Expand Collapse

JsEndDeviceRegistry

Manage end devices on The Things Stack Join Server.

Expand Collapse

delete

/js/applications/{application_ids.application_id}/devices/{device_id}

Delete deletes the device that matches the given identifiers.

Expand Collapse

If there are multiple matches, an error will be returned.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_id string true
dev_eui string The LoRaWAN DevEUI.
join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/js/applications/{application_ids.application_id}/provision-devices

This rpc is deprecated; use EndDeviceTemplateConverter service instead.

Expand Collapse

TODO: Remove (https://github.com/TheThingsNetwork/lorawan-stack/issues/999)

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "from_data": {
    "properties": {
      "join_eui": {
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "list": {
    "properties": {
      "end_device_ids": {
        "items": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "join_eui": {
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "provisioner_id": {
    "description": "ID of the provisioner service as configured in the Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data.",
    "format": "byte",
    "type": "string"
  },
  "range": {
    "properties": {
      "join_eui": {
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "start_dev_eui": {
        "description": "DevEUI to start issuing from.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.(streaming responses)
Show JSON Schema
        {
  "error": {
    "properties": {
      "code": {
        "format": "int32",
        "type": "integer"
      },
      "details": {
        "items": {
          "additionalProperties": {},
          "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
          "properties": {
            "@type": {
              "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "message": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "result": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/js/applications/{end_device.ids.application_ids.application_id}/devices

Set creates or updates the device.

Expand Collapse

Request Parameters
Field Type Required Description
end_device.ids.application_ids.application_id string true
Request Body
Show JSON Schema
{
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the end device fields that should be updated.\nSee the API reference for which fields can be set on the different services.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/js/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}

Set creates or updates the device.

Expand Collapse

Request Parameters
Field Type Required Description
end_device.ids.application_ids.application_id string true
end_device.ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the end device fields that should be updated.\nSee the API reference for which fields can be set on the different services.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/js/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}

Get returns the device that matches the given identifiers.

Expand Collapse

If there are multiple matches, an error will be returned.

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
field_mask string The names of the end device fields that should be returned. See the API reference for which fields can be returned by the different services.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

JsEndDeviceBatchRegistry

Manage batches of end devices on The Things Stack Join Server.

Expand Collapse

delete

/js/applications/{application_ids.application_id}/devices/batch

Delete a list of devices within the same application.

Expand Collapse

This operation is atomic; either all devices are deleted or none. Devices not found are skipped and no error is returned.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_ids array
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

ApplicationActivationSettingRegistry

Manage application activation settings.

Expand Collapse

delete

/js/applications/{application_ids.application_id}/settings

Delete deletes application activation settings.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/js/applications/{application_ids.application_id}/settings

Get returns application activation settings.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
field_mask string
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.",
    "type": "string"
  },
  "home_net_id": {
    "description": "Home NetID.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "kek": {
    "properties": {
      "encrypted_key": {
        "format": "byte",
        "type": "string"
      },
      "kek_label": {
        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
        "type": "string"
      },
      "key": {
        "description": "The unencrypted AES key.",
        "example": "0123456789ABCDEF0123456789ABCDEF",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "kek_label": {
    "description": "The KEK label to use for wrapping application keys.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/js/applications/{application_ids.application_id}/settings

Set creates or updates application activation settings.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
Request Body
Show JSON Schema
{
  "application_ids": {
    "type": "object"
  },
  "field_mask": {
    "type": "string"
  },
  "settings": {
    "properties": {
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.",
        "type": "string"
      },
      "home_net_id": {
        "description": "Home NetID.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "kek": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "kek_label": {
        "description": "The KEK label to use for wrapping application keys.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.",
    "type": "string"
  },
  "home_net_id": {
    "description": "Home NetID.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "kek": {
    "properties": {
      "encrypted_key": {
        "format": "byte",
        "type": "string"
      },
      "kek_label": {
        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
        "type": "string"
      },
      "key": {
        "description": "The unencrypted AES key.",
        "example": "0123456789ABCDEF0123456789ABCDEF",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "kek_label": {
    "description": "The KEK label to use for wrapping application keys.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

Js

Fetch configuration for The Things Stack Join Server.

Expand Collapse

get

/js/default_join_eui

Request the default JoinEUI that is configured for this Join Server.

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "join_eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/js/join_eui_prefixes

Request the JoinEUI prefixes that are configured for this Join Server.

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "prefixes": {
    "items": {
      "properties": {
        "join_eui": {
          "example": "70B3D57ED000ABCD",
          "format": "string",
          "type": "string"
        },
        "length": {
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

Ns

Manage The Things Stack Network Server.

Expand Collapse

get

/ns/default_mac_settings/{frequency_plan_id}/{lorawan_phy_version}

GetDefaultMACSettings retrieves the default MAC settings for a frequency plan.

Expand Collapse

Request Parameters
Field Type Required Description
frequency_plan_id string true
lorawan_phy_version string true
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "adr": {
    "description": "Adaptive Data Rate settings.",
    "properties": {
      "disabled": {
        "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
        "type": "object"
      },
      "dynamic": {
        "description": "Configuration options for dynamic ADR.",
        "properties": {
          "channel_steering": {
            "description": "EXPERIMENTAL: Channel steering settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                "type": "object"
              },
              "lora_narrow": {
                "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                "type": "object"
              }
            },
            "type": "object"
          },
          "margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "float",
            "type": "number"
          },
          "max_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "max_nb_trans": {
            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "max_tx_power_index": {
            "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "min_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "min_nb_trans": {
            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "min_tx_power_index": {
            "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "overrides": {
            "description": "EXPERIMENTAL: Configuration overrides.",
            "properties": {
              "data_rate_0": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_1": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_10": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_11": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_12": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_13": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_14": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_15": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_2": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_3": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_4": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_5": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_6": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_7": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_8": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "data_rate_9": {
                "description": "EXPERIMENTAL: Data rate index override settings.",
                "properties": {
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "static": {
        "description": "Configuration options for static ADR.",
        "properties": {
          "data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "nb_trans": {
            "description": "Number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "tx_power_index": {
            "description": "Transmission power index to use.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "adr_margin": {
    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
    "format": "float",
    "type": "number"
  },
  "beacon_frequency": {
    "properties": {
      "value": {
        "format": "uint64",
        "type": "string"
      }
    },
    "type": "object"
  },
  "class_b_c_downlink_interval": {
    "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
    "type": "string"
  },
  "class_b_timeout": {
    "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
    "type": "string"
  },
  "class_c_timeout": {
    "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
    "type": "string"
  },
  "desired_adr_ack_delay_exponent": {
    "properties": {
      "value": {
        "default": "ADR_ACK_DELAY_1",
        "enum": [
          "ADR_ACK_DELAY_1",
          "ADR_ACK_DELAY_2",
          "ADR_ACK_DELAY_4",
          "ADR_ACK_DELAY_8",
          "ADR_ACK_DELAY_16",
          "ADR_ACK_DELAY_32",
          "ADR_ACK_DELAY_64",
          "ADR_ACK_DELAY_128",
          "ADR_ACK_DELAY_256",
          "ADR_ACK_DELAY_512",
          "ADR_ACK_DELAY_1024",
          "ADR_ACK_DELAY_2048",
          "ADR_ACK_DELAY_4096",
          "ADR_ACK_DELAY_8192",
          "ADR_ACK_DELAY_16384",
          "ADR_ACK_DELAY_32768"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_adr_ack_limit_exponent": {
    "properties": {
      "value": {
        "default": "ADR_ACK_LIMIT_1",
        "enum": [
          "ADR_ACK_LIMIT_1",
          "ADR_ACK_LIMIT_2",
          "ADR_ACK_LIMIT_4",
          "ADR_ACK_LIMIT_8",
          "ADR_ACK_LIMIT_16",
          "ADR_ACK_LIMIT_32",
          "ADR_ACK_LIMIT_64",
          "ADR_ACK_LIMIT_128",
          "ADR_ACK_LIMIT_256",
          "ADR_ACK_LIMIT_512",
          "ADR_ACK_LIMIT_1024",
          "ADR_ACK_LIMIT_2048",
          "ADR_ACK_LIMIT_4096",
          "ADR_ACK_LIMIT_8192",
          "ADR_ACK_LIMIT_16384",
          "ADR_ACK_LIMIT_32768"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_beacon_frequency": {
    "properties": {
      "value": {
        "format": "uint64",
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_max_duty_cycle": {
    "properties": {
      "value": {
        "default": "DUTY_CYCLE_1",
        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
        "enum": [
          "DUTY_CYCLE_1",
          "DUTY_CYCLE_2",
          "DUTY_CYCLE_4",
          "DUTY_CYCLE_8",
          "DUTY_CYCLE_16",
          "DUTY_CYCLE_32",
          "DUTY_CYCLE_64",
          "DUTY_CYCLE_128",
          "DUTY_CYCLE_256",
          "DUTY_CYCLE_512",
          "DUTY_CYCLE_1024",
          "DUTY_CYCLE_2048",
          "DUTY_CYCLE_4096",
          "DUTY_CYCLE_8192",
          "DUTY_CYCLE_16384",
          "DUTY_CYCLE_32768"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_max_eirp": {
    "properties": {
      "value": {
        "default": "DEVICE_EIRP_8",
        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
        "enum": [
          "DEVICE_EIRP_8",
          "DEVICE_EIRP_10",
          "DEVICE_EIRP_12",
          "DEVICE_EIRP_13",
          "DEVICE_EIRP_14",
          "DEVICE_EIRP_16",
          "DEVICE_EIRP_18",
          "DEVICE_EIRP_20",
          "DEVICE_EIRP_21",
          "DEVICE_EIRP_24",
          "DEVICE_EIRP_26",
          "DEVICE_EIRP_27",
          "DEVICE_EIRP_29",
          "DEVICE_EIRP_30",
          "DEVICE_EIRP_33",
          "DEVICE_EIRP_36"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_ping_slot_data_rate_index": {
    "properties": {
      "value": {
        "default": "DATA_RATE_0",
        "enum": [
          "DATA_RATE_0",
          "DATA_RATE_1",
          "DATA_RATE_2",
          "DATA_RATE_3",
          "DATA_RATE_4",
          "DATA_RATE_5",
          "DATA_RATE_6",
          "DATA_RATE_7",
          "DATA_RATE_8",
          "DATA_RATE_9",
          "DATA_RATE_10",
          "DATA_RATE_11",
          "DATA_RATE_12",
          "DATA_RATE_13",
          "DATA_RATE_14",
          "DATA_RATE_15"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_ping_slot_frequency": {
    "properties": {
      "value": {
        "format": "uint64",
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_relay": {
    "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
    "properties": {
      "served": {
        "properties": {
          "always": {
            "type": "object"
          },
          "backoff": {
            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "dynamic": {
            "properties": {
              "smart_enable_level": {
                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                "enum": [
                  "RELAY_SMART_ENABLE_LEVEL_8",
                  "RELAY_SMART_ENABLE_LEVEL_16",
                  "RELAY_SMART_ENABLE_LEVEL_32",
                  "RELAY_SMART_ENABLE_LEVEL_64"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "end_device_controlled": {
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving_device_id": {
            "description": "End device identifier of the serving end device.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serving": {
        "properties": {
          "cad_periodicity": {
            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
            "enum": [
              "RELAY_CAD_PERIODICITY_1_SECOND",
              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
            ],
            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
            "type": "string"
          },
          "default_channel_index": {
            "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "limits": {
            "properties": {
              "join_requests": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "notifications": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "overall": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "reset_behavior": {
                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                "enum": [
                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                ],
                "type": "string"
              },
              "uplink_messages": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "uplink_forwarding_rules": {
            "description": "Configured uplink forwarding rules.",
            "items": {
              "properties": {
                "device_id": {
                  "description": "End device identifier of the served end device.",
                  "type": "string"
                },
                "last_w_f_cnt": {
                  "description": "Last wake on radio frame counter used by the served end device.",
                  "format": "int64",
                  "type": "integer"
                },
                "limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "desired_rx1_data_rate_offset": {
    "properties": {
      "value": {
        "default": "DATA_RATE_OFFSET_0",
        "enum": [
          "DATA_RATE_OFFSET_0",
          "DATA_RATE_OFFSET_1",
          "DATA_RATE_OFFSET_2",
          "DATA_RATE_OFFSET_3",
          "DATA_RATE_OFFSET_4",
          "DATA_RATE_OFFSET_5",
          "DATA_RATE_OFFSET_6",
          "DATA_RATE_OFFSET_7"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_rx1_delay": {
    "properties": {
      "value": {
        "default": "RX_DELAY_0",
        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
        "enum": [
          "RX_DELAY_0",
          "RX_DELAY_1",
          "RX_DELAY_2",
          "RX_DELAY_3",
          "RX_DELAY_4",
          "RX_DELAY_5",
          "RX_DELAY_6",
          "RX_DELAY_7",
          "RX_DELAY_8",
          "RX_DELAY_9",
          "RX_DELAY_10",
          "RX_DELAY_11",
          "RX_DELAY_12",
          "RX_DELAY_13",
          "RX_DELAY_14",
          "RX_DELAY_15"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_rx2_data_rate_index": {
    "properties": {
      "value": {
        "default": "DATA_RATE_0",
        "enum": [
          "DATA_RATE_0",
          "DATA_RATE_1",
          "DATA_RATE_2",
          "DATA_RATE_3",
          "DATA_RATE_4",
          "DATA_RATE_5",
          "DATA_RATE_6",
          "DATA_RATE_7",
          "DATA_RATE_8",
          "DATA_RATE_9",
          "DATA_RATE_10",
          "DATA_RATE_11",
          "DATA_RATE_12",
          "DATA_RATE_13",
          "DATA_RATE_14",
          "DATA_RATE_15"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "desired_rx2_frequency": {
    "properties": {
      "value": {
        "format": "uint64",
        "type": "string"
      }
    },
    "type": "object"
  },
  "downlink_dwell_time": {
    "properties": {
      "value": {
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "factory_preset_frequencies": {
    "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
    "items": {
      "format": "uint64",
      "type": "string"
    },
    "type": "array"
  },
  "max_duty_cycle": {
    "properties": {
      "value": {
        "default": "DUTY_CYCLE_1",
        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
        "enum": [
          "DUTY_CYCLE_1",
          "DUTY_CYCLE_2",
          "DUTY_CYCLE_4",
          "DUTY_CYCLE_8",
          "DUTY_CYCLE_16",
          "DUTY_CYCLE_32",
          "DUTY_CYCLE_64",
          "DUTY_CYCLE_128",
          "DUTY_CYCLE_256",
          "DUTY_CYCLE_512",
          "DUTY_CYCLE_1024",
          "DUTY_CYCLE_2048",
          "DUTY_CYCLE_4096",
          "DUTY_CYCLE_8192",
          "DUTY_CYCLE_16384",
          "DUTY_CYCLE_32768"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "ping_slot_data_rate_index": {
    "properties": {
      "value": {
        "default": "DATA_RATE_0",
        "enum": [
          "DATA_RATE_0",
          "DATA_RATE_1",
          "DATA_RATE_2",
          "DATA_RATE_3",
          "DATA_RATE_4",
          "DATA_RATE_5",
          "DATA_RATE_6",
          "DATA_RATE_7",
          "DATA_RATE_8",
          "DATA_RATE_9",
          "DATA_RATE_10",
          "DATA_RATE_11",
          "DATA_RATE_12",
          "DATA_RATE_13",
          "DATA_RATE_14",
          "DATA_RATE_15"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "ping_slot_frequency": {
    "properties": {
      "value": {
        "format": "uint64",
        "type": "string"
      }
    },
    "type": "object"
  },
  "ping_slot_periodicity": {
    "properties": {
      "value": {
        "default": "PING_EVERY_1S",
        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
        "enum": [
          "PING_EVERY_1S",
          "PING_EVERY_2S",
          "PING_EVERY_4S",
          "PING_EVERY_8S",
          "PING_EVERY_16S",
          "PING_EVERY_32S",
          "PING_EVERY_64S",
          "PING_EVERY_128S"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "relay": {
    "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
    "properties": {
      "served": {
        "properties": {
          "always": {
            "type": "object"
          },
          "backoff": {
            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "dynamic": {
            "properties": {
              "smart_enable_level": {
                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                "enum": [
                  "RELAY_SMART_ENABLE_LEVEL_8",
                  "RELAY_SMART_ENABLE_LEVEL_16",
                  "RELAY_SMART_ENABLE_LEVEL_32",
                  "RELAY_SMART_ENABLE_LEVEL_64"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "end_device_controlled": {
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving_device_id": {
            "description": "End device identifier of the serving end device.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serving": {
        "properties": {
          "cad_periodicity": {
            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
            "enum": [
              "RELAY_CAD_PERIODICITY_1_SECOND",
              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
            ],
            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
            "type": "string"
          },
          "default_channel_index": {
            "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "limits": {
            "properties": {
              "join_requests": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "notifications": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "overall": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "reset_behavior": {
                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                "enum": [
                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                ],
                "type": "string"
              },
              "uplink_messages": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "uplink_forwarding_rules": {
            "description": "Configured uplink forwarding rules.",
            "items": {
              "properties": {
                "device_id": {
                  "description": "End device identifier of the served end device.",
                  "type": "string"
                },
                "last_w_f_cnt": {
                  "description": "Last wake on radio frame counter used by the served end device.",
                  "format": "int64",
                  "type": "integer"
                },
                "limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "resets_f_cnt": {
    "properties": {
      "value": {
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "rx1_data_rate_offset": {
    "properties": {
      "value": {
        "default": "DATA_RATE_OFFSET_0",
        "enum": [
          "DATA_RATE_OFFSET_0",
          "DATA_RATE_OFFSET_1",
          "DATA_RATE_OFFSET_2",
          "DATA_RATE_OFFSET_3",
          "DATA_RATE_OFFSET_4",
          "DATA_RATE_OFFSET_5",
          "DATA_RATE_OFFSET_6",
          "DATA_RATE_OFFSET_7"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "rx1_delay": {
    "properties": {
      "value": {
        "default": "RX_DELAY_0",
        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
        "enum": [
          "RX_DELAY_0",
          "RX_DELAY_1",
          "RX_DELAY_2",
          "RX_DELAY_3",
          "RX_DELAY_4",
          "RX_DELAY_5",
          "RX_DELAY_6",
          "RX_DELAY_7",
          "RX_DELAY_8",
          "RX_DELAY_9",
          "RX_DELAY_10",
          "RX_DELAY_11",
          "RX_DELAY_12",
          "RX_DELAY_13",
          "RX_DELAY_14",
          "RX_DELAY_15"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "rx2_data_rate_index": {
    "properties": {
      "value": {
        "default": "DATA_RATE_0",
        "enum": [
          "DATA_RATE_0",
          "DATA_RATE_1",
          "DATA_RATE_2",
          "DATA_RATE_3",
          "DATA_RATE_4",
          "DATA_RATE_5",
          "DATA_RATE_6",
          "DATA_RATE_7",
          "DATA_RATE_8",
          "DATA_RATE_9",
          "DATA_RATE_10",
          "DATA_RATE_11",
          "DATA_RATE_12",
          "DATA_RATE_13",
          "DATA_RATE_14",
          "DATA_RATE_15"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "rx2_frequency": {
    "properties": {
      "value": {
        "format": "uint64",
        "type": "string"
      }
    },
    "type": "object"
  },
  "schedule_downlinks": {
    "properties": {
      "value": {
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "status_count_periodicity": {
    "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
    "format": "int64",
    "type": "integer"
  },
  "status_time_periodicity": {
    "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
    "type": "string"
  },
  "supports_32_bit_f_cnt": {
    "properties": {
      "value": {
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "uplink_dwell_time": {
    "properties": {
      "value": {
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "use_adr": {
    "properties": {
      "value": {
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/ns/dev_addr

GenerateDevAddr requests a device address assignment from the Network Server.

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "dev_addr": {
    "example": "2600ABCD",
    "format": "string",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/ns/dev_addr_prefixes

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "dev_addr_prefixes": {
    "example": [
      "2600AB00/24"
    ],
    "items": {
      "format": "byte",
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/ns/net_id

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "net_id": {
    "example": "000013",
    "format": "string",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

AsNs

The AsNs service connects an Application Server to a Network Server. This is an inter-component service and is not intended to be used by end users.

Expand Collapse

GsNs

The GsNS service connects a Gateway Server to a Network Server. This is an inter-component service and is not intended to be used by end users.

Expand Collapse

NsEndDeviceRegistry

Manage end devices on The Things Stack Network Server.

Expand Collapse

delete

/ns/applications/{application_ids.application_id}/devices/{device_id}

Delete deletes the device that matches the given identifiers.

Expand Collapse

If there are multiple matches, an error will be returned.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_id string true
dev_eui string The LoRaWAN DevEUI.
join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/ns/applications/{end_device.ids.application_ids.application_id}/devices

Set creates or updates the device.

Expand Collapse

Request Parameters
Field Type Required Description
end_device.ids.application_ids.application_id string true
Request Body
Show JSON Schema
{
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the end device fields that should be updated.\nSee the API reference for which fields can be set on the different services.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/ns/applications/{end_device.ids.application_ids.application_id}/devices/{end_device.ids.device_id}

Set creates or updates the device.

Expand Collapse

Request Parameters
Field Type Required Description
end_device.ids.application_ids.application_id string true
end_device.ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the end device fields that should be updated.\nSee the API reference for which fields can be set on the different services.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/ns/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}

Get returns the device that matches the given identifiers.

Expand Collapse

If there are multiple matches, an error will be returned.

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
field_mask string The names of the end device fields that should be returned. See the API reference for which fields can be returned by the different services.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

patch

/ns/applications/{end_device_ids.application_ids.application_id}/devices/{end_device_ids.device_id}

ResetFactoryDefaults resets device state to factory defaults.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the end device fields that should be returned.\nSee the API reference for which fields can be returned by the different services.",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "activated_at": {
    "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
    "format": "date-time",
    "type": "string"
  },
  "application_server_address": {
    "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "application_server_id": {
    "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
    "type": "string"
  },
  "application_server_kek_label": {
    "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
    "type": "object"
  },
  "battery_percentage": {
    "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
    "format": "float",
    "type": "number"
  },
  "claim_authentication_code": {
    "description": "Authentication code for end devices.",
    "properties": {
      "valid_from": {
        "format": "date-time",
        "type": "string"
      },
      "valid_to": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "Description of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "downlink_margin": {
    "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
    "format": "int32",
    "type": "integer"
  },
  "formatters": {
    "properties": {
      "down_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "down_formatter_parameter": {
        "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      },
      "up_formatter": {
        "default": "FORMATTER_NONE",
        "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
        "enum": [
          "FORMATTER_NONE",
          "FORMATTER_REPOSITORY",
          "FORMATTER_GRPC_SERVICE",
          "FORMATTER_JAVASCRIPT",
          "FORMATTER_CAYENNELPP"
        ],
        "type": "string"
      },
      "up_formatter_parameter": {
        "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "frequency_plan_id": {
    "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "string"
  },
  "ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "type": "object"
  },
  "join_server_address": {
    "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "label_ids": {
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "last_dev_nonce": {
    "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_dev_status_received_at": {
    "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
    "format": "date-time",
    "type": "string"
  },
  "last_join_nonce": {
    "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_0": {
    "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_rj_count_1": {
    "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
    "format": "int64",
    "type": "integer"
  },
  "last_seen_at": {
    "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
    "format": "date-time",
    "type": "string"
  },
  "locations": {
    "additionalProperties": {
      "properties": {
        "accuracy": {
          "description": "The accuracy of the location (meters).",
          "format": "int32",
          "type": "integer"
        },
        "altitude": {
          "description": "The altitude (meters), where 0 is the mean sea level.",
          "format": "int32",
          "type": "integer"
        },
        "latitude": {
          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
          "format": "double",
          "type": "number"
        },
        "longitude": {
          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
          "format": "double",
          "type": "number"
        },
        "source": {
          "default": "SOURCE_UNKNOWN",
          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
          "enum": [
            "SOURCE_UNKNOWN",
            "SOURCE_GPS",
            "SOURCE_REGISTRY",
            "SOURCE_IP_GEOLOCATION",
            "SOURCE_WIFI_RSSI_GEOLOCATION",
            "SOURCE_BT_RSSI_GEOLOCATION",
            "SOURCE_LORA_RSSI_GEOLOCATION",
            "SOURCE_LORA_TDOA_GEOLOCATION",
            "SOURCE_COMBINED_GEOLOCATION"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Location of the device. Stored in Entity Registry.",
    "type": "object"
  },
  "lora_alliance_profile_ids": {
    "properties": {
      "vendor_id": {
        "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
        "format": "int64",
        "type": "integer"
      },
      "vendor_profile_id": {
        "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  },
  "lorawan_phy_version": {
    "default": "PHY_UNKNOWN",
    "enum": [
      "PHY_UNKNOWN",
      "PHY_V1_0",
      "TS001_V1_0",
      "PHY_V1_0_1",
      "TS001_V1_0_1",
      "PHY_V1_0_2_REV_A",
      "RP001_V1_0_2",
      "PHY_V1_0_2_REV_B",
      "RP001_V1_0_2_REV_B",
      "PHY_V1_1_REV_A",
      "RP001_V1_1_REV_A",
      "PHY_V1_1_REV_B",
      "RP001_V1_1_REV_B",
      "PHY_V1_0_3_REV_A",
      "RP001_V1_0_3_REV_A",
      "RP002_V1_0_0",
      "RP002_V1_0_1",
      "RP002_V1_0_2",
      "RP002_V1_0_3",
      "RP002_V1_0_4"
    ],
    "type": "string"
  },
  "lorawan_version": {
    "default": "MAC_UNKNOWN",
    "enum": [
      "MAC_UNKNOWN",
      "MAC_V1_0",
      "MAC_V1_0_1",
      "MAC_V1_0_2",
      "MAC_V1_1",
      "MAC_V1_0_3",
      "MAC_V1_0_4"
    ],
    "type": "string"
  },
  "mac_settings": {
    "properties": {
      "adr": {
        "description": "Adaptive Data Rate settings.",
        "properties": {
          "disabled": {
            "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
            "type": "object"
          },
          "dynamic": {
            "description": "Configuration options for dynamic ADR.",
            "properties": {
              "channel_steering": {
                "description": "EXPERIMENTAL: Channel steering settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                    "type": "object"
                  },
                  "lora_narrow": {
                    "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "float",
                "type": "number"
              },
              "max_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "max_nb_trans": {
                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "max_tx_power_index": {
                "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "min_nb_trans": {
                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "min_tx_power_index": {
                "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "overrides": {
                "description": "EXPERIMENTAL: Configuration overrides.",
                "properties": {
                  "data_rate_0": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_1": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_10": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_11": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_12": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_13": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_14": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_15": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_2": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_3": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_4": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_5": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_6": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_7": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_8": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "data_rate_9": {
                    "description": "EXPERIMENTAL: Data rate index override settings.",
                    "properties": {
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "static": {
            "description": "Configuration options for static ADR.",
            "properties": {
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "nb_trans": {
                "description": "Number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "tx_power_index": {
                "description": "Transmission power index to use.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "adr_margin": {
        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
        "format": "float",
        "type": "number"
      },
      "beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "class_b_c_downlink_interval": {
        "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
        "type": "string"
      },
      "class_b_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "class_c_timeout": {
        "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "desired_adr_ack_delay_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_DELAY_1",
            "enum": [
              "ADR_ACK_DELAY_1",
              "ADR_ACK_DELAY_2",
              "ADR_ACK_DELAY_4",
              "ADR_ACK_DELAY_8",
              "ADR_ACK_DELAY_16",
              "ADR_ACK_DELAY_32",
              "ADR_ACK_DELAY_64",
              "ADR_ACK_DELAY_128",
              "ADR_ACK_DELAY_256",
              "ADR_ACK_DELAY_512",
              "ADR_ACK_DELAY_1024",
              "ADR_ACK_DELAY_2048",
              "ADR_ACK_DELAY_4096",
              "ADR_ACK_DELAY_8192",
              "ADR_ACK_DELAY_16384",
              "ADR_ACK_DELAY_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_adr_ack_limit_exponent": {
        "properties": {
          "value": {
            "default": "ADR_ACK_LIMIT_1",
            "enum": [
              "ADR_ACK_LIMIT_1",
              "ADR_ACK_LIMIT_2",
              "ADR_ACK_LIMIT_4",
              "ADR_ACK_LIMIT_8",
              "ADR_ACK_LIMIT_16",
              "ADR_ACK_LIMIT_32",
              "ADR_ACK_LIMIT_64",
              "ADR_ACK_LIMIT_128",
              "ADR_ACK_LIMIT_256",
              "ADR_ACK_LIMIT_512",
              "ADR_ACK_LIMIT_1024",
              "ADR_ACK_LIMIT_2048",
              "ADR_ACK_LIMIT_4096",
              "ADR_ACK_LIMIT_8192",
              "ADR_ACK_LIMIT_16384",
              "ADR_ACK_LIMIT_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_beacon_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_max_eirp": {
        "properties": {
          "value": {
            "default": "DEVICE_EIRP_8",
            "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
            "enum": [
              "DEVICE_EIRP_8",
              "DEVICE_EIRP_10",
              "DEVICE_EIRP_12",
              "DEVICE_EIRP_13",
              "DEVICE_EIRP_14",
              "DEVICE_EIRP_16",
              "DEVICE_EIRP_18",
              "DEVICE_EIRP_20",
              "DEVICE_EIRP_21",
              "DEVICE_EIRP_24",
              "DEVICE_EIRP_26",
              "DEVICE_EIRP_27",
              "DEVICE_EIRP_29",
              "DEVICE_EIRP_30",
              "DEVICE_EIRP_33",
              "DEVICE_EIRP_36"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "desired_rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "downlink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "factory_preset_frequencies": {
        "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "max_duty_cycle": {
        "properties": {
          "value": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "relay": {
        "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
        "properties": {
          "served": {
            "properties": {
              "always": {
                "type": "object"
              },
              "backoff": {
                "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "dynamic": {
                "properties": {
                  "smart_enable_level": {
                    "default": "RELAY_SMART_ENABLE_LEVEL_8",
                    "enum": [
                      "RELAY_SMART_ENABLE_LEVEL_8",
                      "RELAY_SMART_ENABLE_LEVEL_16",
                      "RELAY_SMART_ENABLE_LEVEL_32",
                      "RELAY_SMART_ENABLE_LEVEL_64"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "end_device_controlled": {
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving_device_id": {
                "description": "End device identifier of the serving end device.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving": {
            "properties": {
              "cad_periodicity": {
                "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                "enum": [
                  "RELAY_CAD_PERIODICITY_1_SECOND",
                  "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                  "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                ],
                "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                "type": "string"
              },
              "default_channel_index": {
                "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "limits": {
                "properties": {
                  "join_requests": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "notifications": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "overall": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_behavior": {
                    "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "enum": [
                      "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                      "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                      "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                    ],
                    "type": "string"
                  },
                  "uplink_messages": {
                    "properties": {
                      "bucket_size": {
                        "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                        "enum": [
                          "RELAY_LIMIT_BUCKET_SIZE_1",
                          "RELAY_LIMIT_BUCKET_SIZE_2",
                          "RELAY_LIMIT_BUCKET_SIZE_4",
                          "RELAY_LIMIT_BUCKET_SIZE_12"
                        ],
                        "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                        "type": "string"
                      },
                      "reload_rate": {
                        "description": "The number of tokens which are replenished in the bucket every hour.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "second_channel": {
                "properties": {
                  "ack_offset": {
                    "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                    "enum": [
                      "RELAY_SECOND_CH_ACK_OFFSET_0",
                      "RELAY_SECOND_CH_ACK_OFFSET_200",
                      "RELAY_SECOND_CH_ACK_OFFSET_400",
                      "RELAY_SECOND_CH_ACK_OFFSET_800",
                      "RELAY_SECOND_CH_ACK_OFFSET_1600",
                      "RELAY_SECOND_CH_ACK_OFFSET_3200"
                    ],
                    "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                    "type": "string"
                  },
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "frequency": {
                    "description": "The frequency (Hz) used by the wake on radio message.",
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "uplink_forwarding_rules": {
                "description": "Configured uplink forwarding rules.",
                "items": {
                  "properties": {
                    "device_id": {
                      "description": "End device identifier of the served end device.",
                      "type": "string"
                    },
                    "last_w_f_cnt": {
                      "description": "Last wake on radio frame counter used by the served end device.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Session key ID of the session keys used to derive the root relay session key.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "resets_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "rx1_data_rate_offset": {
        "properties": {
          "value": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx1_delay": {
        "properties": {
          "value": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_data_rate_index": {
        "properties": {
          "value": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "rx2_frequency": {
        "properties": {
          "value": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "schedule_downlinks": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "status_count_periodicity": {
        "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "format": "int64",
        "type": "integer"
      },
      "status_time_periodicity": {
        "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
        "type": "string"
      },
      "supports_32_bit_f_cnt": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "uplink_dwell_time": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "use_adr": {
        "properties": {
          "value": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "profile_id": {
        "description": "Profile ID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "max_frequency": {
    "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "min_frequency": {
    "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "format": "uint64",
    "type": "string"
  },
  "multicast": {
    "description": "Indicates whether this device represents a multicast group.",
    "type": "boolean"
  },
  "name": {
    "description": "Friendly name of the device. Stored in Entity Registry.",
    "type": "string"
  },
  "net_id": {
    "description": "Home NetID. Stored in Join Server.",
    "example": "000013",
    "format": "string",
    "type": "string"
  },
  "network_server_address": {
    "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
    "type": "string"
  },
  "network_server_kek_label": {
    "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
    "type": "string"
  },
  "pending_mac_state": {
    "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
    "properties": {
      "current_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "desired_parameters": {
        "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
        "properties": {
          "adr_ack_delay": {
            "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_ack_limit": {
            "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
            "format": "int64",
            "type": "integer"
          },
          "adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "adr_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "adr_nb_trans": {
            "description": "ADR: number of retransmissions.",
            "format": "int64",
            "type": "integer"
          },
          "adr_tx_power_index": {
            "description": "ADR: transmission power index to use.",
            "format": "int64",
            "type": "integer"
          },
          "beacon_frequency": {
            "description": "Frequency of the class B beacon (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "channels": {
            "description": "Configured uplink channels and optionally Rx1 frequency.",
            "items": {
              "properties": {
                "downlink_frequency": {
                  "description": "Downlink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "enable_uplink": {
                  "description": "Channel can be used by device for uplink.",
                  "type": "boolean"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "uplink_frequency": {
                  "description": "Uplink frequency of the channel (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_duty_cycle": {
            "default": "DUTY_CYCLE_1",
            "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
            "enum": [
              "DUTY_CYCLE_1",
              "DUTY_CYCLE_2",
              "DUTY_CYCLE_4",
              "DUTY_CYCLE_8",
              "DUTY_CYCLE_16",
              "DUTY_CYCLE_32",
              "DUTY_CYCLE_64",
              "DUTY_CYCLE_128",
              "DUTY_CYCLE_256",
              "DUTY_CYCLE_512",
              "DUTY_CYCLE_1024",
              "DUTY_CYCLE_2048",
              "DUTY_CYCLE_4096",
              "DUTY_CYCLE_8192",
              "DUTY_CYCLE_16384",
              "DUTY_CYCLE_32768"
            ],
            "type": "string"
          },
          "max_eirp": {
            "description": "Maximum EIRP (dBm).",
            "format": "float",
            "type": "number"
          },
          "ping_slot_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "ping_slot_data_rate_index_value": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "description": "Frequency of the class B ping slot (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "rejoin_count_periodicity": {
            "default": "REJOIN_COUNT_16",
            "enum": [
              "REJOIN_COUNT_16",
              "REJOIN_COUNT_32",
              "REJOIN_COUNT_64",
              "REJOIN_COUNT_128",
              "REJOIN_COUNT_256",
              "REJOIN_COUNT_512",
              "REJOIN_COUNT_1024",
              "REJOIN_COUNT_2048",
              "REJOIN_COUNT_4096",
              "REJOIN_COUNT_8192",
              "REJOIN_COUNT_16384",
              "REJOIN_COUNT_32768",
              "REJOIN_COUNT_65536",
              "REJOIN_COUNT_131072",
              "REJOIN_COUNT_262144",
              "REJOIN_COUNT_524288"
            ],
            "type": "string"
          },
          "rejoin_time_periodicity": {
            "default": "REJOIN_TIME_0",
            "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
            "enum": [
              "REJOIN_TIME_0",
              "REJOIN_TIME_1",
              "REJOIN_TIME_2",
              "REJOIN_TIME_3",
              "REJOIN_TIME_4",
              "REJOIN_TIME_5",
              "REJOIN_TIME_6",
              "REJOIN_TIME_7",
              "REJOIN_TIME_8",
              "REJOIN_TIME_9",
              "REJOIN_TIME_10",
              "REJOIN_TIME_11",
              "REJOIN_TIME_12",
              "REJOIN_TIME_13",
              "REJOIN_TIME_14",
              "REJOIN_TIME_15"
            ],
            "type": "string"
          },
          "relay": {
            "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "default": "DATA_RATE_OFFSET_0",
            "enum": [
              "DATA_RATE_OFFSET_0",
              "DATA_RATE_OFFSET_1",
              "DATA_RATE_OFFSET_2",
              "DATA_RATE_OFFSET_3",
              "DATA_RATE_OFFSET_4",
              "DATA_RATE_OFFSET_5",
              "DATA_RATE_OFFSET_6",
              "DATA_RATE_OFFSET_7"
            ],
            "type": "string"
          },
          "rx1_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          },
          "rx2_data_rate_index": {
            "default": "DATA_RATE_0",
            "enum": [
              "DATA_RATE_0",
              "DATA_RATE_1",
              "DATA_RATE_2",
              "DATA_RATE_3",
              "DATA_RATE_4",
              "DATA_RATE_5",
              "DATA_RATE_6",
              "DATA_RATE_7",
              "DATA_RATE_8",
              "DATA_RATE_9",
              "DATA_RATE_10",
              "DATA_RATE_11",
              "DATA_RATE_12",
              "DATA_RATE_13",
              "DATA_RATE_14",
              "DATA_RATE_15"
            ],
            "type": "string"
          },
          "rx2_frequency": {
            "description": "Frequency for Rx2 (Hz).",
            "format": "uint64",
            "type": "string"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "device_class": {
        "default": "CLASS_A",
        "enum": [
          "CLASS_A",
          "CLASS_B",
          "CLASS_C"
        ],
        "type": "string"
      },
      "last_adr_change_f_cnt_up": {
        "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
        "format": "int64",
        "type": "integer"
      },
      "last_confirmed_downlink_at": {
        "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_dev_status_f_cnt_up": {
        "description": "Frame counter value of last uplink containing DevStatusAns.",
        "format": "int64",
        "type": "integer"
      },
      "last_downlink_at": {
        "description": "Time when the last downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "last_network_initiated_downlink_at": {
        "description": "Time when the last network-initiated downlink message was scheduled.",
        "format": "date-time",
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "pending_application_downlink": {
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Attributes for devices, set by the Application Server while handling the message.",
            "type": "object"
          },
          "class_b_c": {
            "properties": {
              "absolute_time": {
                "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                "format": "date-time",
                "type": "string"
              },
              "gateways": {
                "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                "items": {
                  "properties": {
                    "antenna_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "gateway_ids": {
                      "properties": {
                        "eui": {
                          "description": "Secondary identifier, which can only be used in specific requests.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "gateway_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "group_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmed_retry": {
            "properties": {
              "attempt": {
                "description": "The number of attempted confirmed downlink acknowledgements.",
                "format": "int64",
                "type": "integer"
              },
              "max_attempts": {
                "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "decoded_payload": {
            "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
            "type": "object"
          },
          "decoded_payload_warnings": {
            "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "f_cnt": {
            "format": "int64",
            "type": "integer"
          },
          "f_port": {
            "format": "int64",
            "type": "integer"
          },
          "frm_payload": {
            "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
            "format": "byte",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "End device location metadata, set by the Application Server while handling the message.",
            "type": "object"
          },
          "network_ids": {
            "description": "Identifies a Network Server.",
            "properties": {
              "cluster_address": {
                "description": "Cluster address of the Network Server.",
                "type": "string"
              },
              "cluster_id": {
                "description": "Cluster identifier of the Network Server.",
                "type": "string"
              },
              "net_id": {
                "description": "LoRa Alliance NetID.",
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "ns_id": {
                "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "tenant_address": {
                "description": "Optional tenant address for multi-tenant deployments.",
                "type": "string"
              },
              "tenant_id": {
                "description": "Optional tenant identifier for multi-tenant deployments.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "priority": {
            "default": "LOWEST",
            "enum": [
              "LOWEST",
              "LOW",
              "BELOW_NORMAL",
              "NORMAL",
              "ABOVE_NORMAL",
              "HIGH",
              "HIGHEST"
            ],
            "type": "string"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys used by this downlink.",
            "format": "byte",
            "type": "string"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "pending_join_request": {
        "properties": {
          "cf_list": {
            "properties": {
              "ch_masks": {
                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                "items": {
                  "type": "boolean"
                },
                "type": "array"
              },
              "freq": {
                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "type": {
                "default": "FREQUENCIES",
                "enum": [
                  "FREQUENCIES",
                  "CHANNEL_MASKS"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_settings": {
            "properties": {
              "opt_neg": {
                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                "type": "boolean"
              },
              "rx1_dr_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx2_dr": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx_delay": {
            "default": "RX_DELAY_0",
            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
            "enum": [
              "RX_DELAY_0",
              "RX_DELAY_1",
              "RX_DELAY_2",
              "RX_DELAY_3",
              "RX_DELAY_4",
              "RX_DELAY_5",
              "RX_DELAY_6",
              "RX_DELAY_7",
              "RX_DELAY_8",
              "RX_DELAY_9",
              "RX_DELAY_10",
              "RX_DELAY_11",
              "RX_DELAY_12",
              "RX_DELAY_13",
              "RX_DELAY_14",
              "RX_DELAY_15"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_relay_downlink": {
        "properties": {
          "raw_payload": {
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "pending_requests": {
        "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "ping_slot_periodicity": {
        "properties": {
          "value": {
            "default": "PING_EVERY_1S",
            "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
            "enum": [
              "PING_EVERY_1S",
              "PING_EVERY_2S",
              "PING_EVERY_4S",
              "PING_EVERY_8S",
              "PING_EVERY_16S",
              "PING_EVERY_32S",
              "PING_EVERY_64S",
              "PING_EVERY_128S"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "queued_join_accept": {
        "properties": {
          "correlation_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dev_addr": {
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "net_id": {
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "payload": {
            "description": "Payload of the join-accept received from Join Server.",
            "format": "byte",
            "type": "string"
          },
          "request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "queued_responses": {
        "description": "Queued MAC responses.\nRegenerated on each uplink.",
        "items": {
          "properties": {
            "adr_param_setup_req": {
              "properties": {
                "adr_ack_delay_exponent": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                },
                "adr_ack_limit_exponent": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_freq_ans": {
              "properties": {
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "beacon_freq_req": {
              "properties": {
                "frequency": {
                  "description": "Frequency of the Class B beacons (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "beacon_timing_ans": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "delay": {
                  "description": "(uint16) See LoRaWAN specification.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "cid": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "dev_status_ans": {
              "properties": {
                "battery": {
                  "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "SNR of the last downlink (dB; [-32, +31]).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "device_mode_conf": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_mode_ind": {
              "properties": {
                "class": {
                  "default": "CLASS_A",
                  "enum": [
                    "CLASS_A",
                    "CLASS_B",
                    "CLASS_C"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_time_ans": {
              "properties": {
                "time": {
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dl_channel_ans": {
              "properties": {
                "channel_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "dl_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Downlink channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "duty_cycle_req": {
              "properties": {
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "force_rejoin_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "max_retries": {
                  "format": "int64",
                  "type": "integer"
                },
                "period_exponent": {
                  "default": "REJOIN_PERIOD_0",
                  "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                  "enum": [
                    "REJOIN_PERIOD_0",
                    "REJOIN_PERIOD_1",
                    "REJOIN_PERIOD_2",
                    "REJOIN_PERIOD_3",
                    "REJOIN_PERIOD_4",
                    "REJOIN_PERIOD_5",
                    "REJOIN_PERIOD_6",
                    "REJOIN_PERIOD_7"
                  ],
                  "type": "string"
                },
                "rejoin_type": {
                  "default": "CONTEXT",
                  "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                  "enum": [
                    "CONTEXT",
                    "SESSION",
                    "KEYS"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "link_adr_ans": {
              "properties": {
                "channel_mask_ack": {
                  "type": "boolean"
                },
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "tx_power_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "link_adr_req": {
              "properties": {
                "channel_mask": {
                  "items": {
                    "type": "boolean"
                  },
                  "type": "array"
                },
                "channel_mask_control": {
                  "format": "int64",
                  "type": "integer"
                },
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "nb_trans": {
                  "format": "int64",
                  "type": "integer"
                },
                "tx_power_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "link_check_ans": {
              "properties": {
                "gateway_count": {
                  "format": "int64",
                  "type": "integer"
                },
                "margin": {
                  "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "new_channel_ans": {
              "properties": {
                "data_rate_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "new_channel_req": {
              "properties": {
                "channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "frequency": {
                  "description": "Channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "max_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "min_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_ans": {
              "properties": {
                "data_rate_index_ack": {
                  "type": "boolean"
                },
                "frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "ping_slot_channel_req": {
              "properties": {
                "data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "description": "Ping slot channel frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_info_req": {
              "properties": {
                "period": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "raw_payload": {
              "format": "byte",
              "type": "string"
            },
            "rejoin_param_setup_ans": {
              "properties": {
                "max_time_exponent_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rejoin_param_setup_req": {
              "properties": {
                "max_count_exponent": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "max_time_exponent": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rekey_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_conf_ans": {
              "properties": {
                "cad_periodicity_ack": {
                  "type": "boolean"
                },
                "default_channel_index_ack": {
                  "type": "boolean"
                },
                "second_channel_ack_offset_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_configure_fwd_limit_ans": {
              "type": "object"
            },
            "relay_configure_fwd_limit_req": {
              "properties": {
                "global_uplink_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "join_request_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "notify_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "overall_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_limit_counter": {
                  "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "enum": [
                    "RELAY_RESET_LIMIT_COUNTER_ZERO",
                    "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                    "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                    "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_ans": {
              "properties": {
                "rule_index_ack": {
                  "type": "boolean"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_ctrl_uplink_list_req": {
              "properties": {
                "action": {
                  "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                  "enum": [
                    "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                    "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                  ],
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_ans": {
              "properties": {
                "backoff_ack": {
                  "type": "boolean"
                },
                "second_channel_data_rate_index_ack": {
                  "type": "boolean"
                },
                "second_channel_frequency_ack": {
                  "type": "boolean"
                },
                "second_channel_index_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "relay_end_device_conf_req": {
              "properties": {
                "configuration": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "relay_notify_new_end_device_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "rssi": {
                  "format": "int32",
                  "type": "integer"
                },
                "snr": {
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "relay_update_uplink_list_ans": {
              "type": "object"
            },
            "relay_update_uplink_list_req": {
              "properties": {
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "forward_limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "root_wor_s_key": {
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                },
                "rule_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "session_key_id": {
                  "format": "byte",
                  "type": "string"
                },
                "w_f_cnt": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reset_conf": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "reset_ind": {
              "properties": {
                "minor_version": {
                  "default": "MINOR_RFU_0",
                  "enum": [
                    "MINOR_RFU_0",
                    "MINOR_1",
                    "MINOR_RFU_2",
                    "MINOR_RFU_3",
                    "MINOR_RFU_4",
                    "MINOR_RFU_5",
                    "MINOR_RFU_6",
                    "MINOR_RFU_7",
                    "MINOR_RFU_8",
                    "MINOR_RFU_9",
                    "MINOR_RFU_10",
                    "MINOR_RFU_11",
                    "MINOR_RFU_12",
                    "MINOR_RFU_13",
                    "MINOR_RFU_14",
                    "MINOR_RFU_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_param_setup_ans": {
              "properties": {
                "rx1_data_rate_offset_ack": {
                  "type": "boolean"
                },
                "rx2_data_rate_index_ack": {
                  "type": "boolean"
                },
                "rx2_frequency_ack": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx_param_setup_req": {
              "properties": {
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Rx2 frequency (Hz).",
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx_timing_setup_req": {
              "properties": {
                "delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tx_param_setup_req": {
              "properties": {
                "downlink_dwell_time": {
                  "type": "boolean"
                },
                "max_eirp_index": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_downlinks": {
        "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "payload": {
              "properties": {
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "full_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "recent_mac_command_identifiers": {
        "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
        "items": {
          "default": "CID_RFU_0",
          "enum": [
            "CID_RFU_0",
            "CID_RESET",
            "CID_LINK_CHECK",
            "CID_LINK_ADR",
            "CID_DUTY_CYCLE",
            "CID_RX_PARAM_SETUP",
            "CID_DEV_STATUS",
            "CID_NEW_CHANNEL",
            "CID_RX_TIMING_SETUP",
            "CID_TX_PARAM_SETUP",
            "CID_DL_CHANNEL",
            "CID_REKEY",
            "CID_ADR_PARAM_SETUP",
            "CID_DEVICE_TIME",
            "CID_FORCE_REJOIN",
            "CID_REJOIN_PARAM_SETUP",
            "CID_PING_SLOT_INFO",
            "CID_PING_SLOT_CHANNEL",
            "CID_BEACON_TIMING",
            "CID_BEACON_FREQ",
            "CID_DEVICE_MODE",
            "CID_RELAY_CONF",
            "CID_RELAY_END_DEVICE_CONF",
            "CID_RELAY_FILTER_LIST",
            "CID_RELAY_UPDATE_UPLINK_LIST",
            "CID_RELAY_CTRL_UPLINK_LIST",
            "CID_RELAY_CONFIGURE_FWD_LIMIT",
            "CID_RELAY_NOTIFY_NEW_END_DEVICE"
          ],
          "title": "- CID_BEACON_TIMING: Deprecated",
          "type": "string"
        },
        "type": "array"
      },
      "recent_uplinks": {
        "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
        "items": {
          "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
          "properties": {
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "device_channel_index": {
              "format": "int64",
              "type": "integer"
            },
            "payload": {
              "properties": {
                "join_accept_payload": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dl_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "encrypted": {
                      "format": "byte",
                      "type": "string"
                    },
                    "join_nonce": {
                      "example": "ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "join_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "dev_nonce": {
                      "example": "ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "m_hdr": {
                  "properties": {
                    "m_type": {
                      "default": "JOIN_REQUEST",
                      "enum": [
                        "JOIN_REQUEST",
                        "JOIN_ACCEPT",
                        "UNCONFIRMED_UP",
                        "UNCONFIRMED_DOWN",
                        "CONFIRMED_UP",
                        "CONFIRMED_DOWN",
                        "REJOIN_REQUEST",
                        "PROPRIETARY"
                      ],
                      "type": "string"
                    },
                    "major": {
                      "default": "LORAWAN_R1",
                      "enum": [
                        "LORAWAN_R1"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "mac_payload": {
                  "properties": {
                    "decoded_payload": {
                      "type": "object"
                    },
                    "f_hdr": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "f_ctrl": {
                          "properties": {
                            "ack": {
                              "type": "boolean"
                            },
                            "adr": {
                              "type": "boolean"
                            },
                            "adr_ack_req": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "class_b": {
                              "description": "Only on uplink.",
                              "type": "boolean"
                            },
                            "f_pending": {
                              "description": "Only on downlink.",
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "f_opts": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "full_f_cnt": {
                      "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "mic": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_request_payload": {
                  "properties": {
                    "dev_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "join_eui": {
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "net_id": {
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "rejoin_cnt": {
                      "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "title": "Message represents a LoRaWAN message",
              "type": "object"
            },
            "received_at": {
              "format": "date-time",
              "type": "string"
            },
            "rx_metadata": {
              "items": {
                "properties": {
                  "channel_rssi": {
                    "format": "float",
                    "type": "number"
                  },
                  "downlink_path_constraint": {
                    "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                    "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                    "enum": [
                      "DOWNLINK_PATH_CONSTRAINT_NONE",
                      "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                      "DOWNLINK_PATH_CONSTRAINT_NEVER"
                    ],
                    "type": "string"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "packet_broker": {
                    "type": "object"
                  },
                  "relay": {
                    "type": "object"
                  },
                  "snr": {
                    "format": "float",
                    "type": "number"
                  },
                  "uplink_token": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "settings": {
              "properties": {
                "data_rate": {
                  "properties": {
                    "fsk": {
                      "properties": {
                        "bit_rate": {
                          "description": "Bit rate (bps).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lora": {
                      "properties": {
                        "bandwidth": {
                          "description": "Bandwidth (Hz).",
                          "format": "int64",
                          "type": "integer"
                        },
                        "coding_rate": {
                          "type": "string"
                        },
                        "spreading_factor": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "lrfhss": {
                      "properties": {
                        "coding_rate": {
                          "type": "string"
                        },
                        "modulation_type": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "operating_channel_width": {
                          "description": "Operating Channel Width (Hz).",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "rejected_adr_data_rate_indexes": {
        "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
        "items": {
          "default": "DATA_RATE_0",
          "enum": [
            "DATA_RATE_0",
            "DATA_RATE_1",
            "DATA_RATE_2",
            "DATA_RATE_3",
            "DATA_RATE_4",
            "DATA_RATE_5",
            "DATA_RATE_6",
            "DATA_RATE_7",
            "DATA_RATE_8",
            "DATA_RATE_9",
            "DATA_RATE_10",
            "DATA_RATE_11",
            "DATA_RATE_12",
            "DATA_RATE_13",
            "DATA_RATE_14",
            "DATA_RATE_15"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "rejected_adr_tx_power_indexes": {
        "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "rejected_data_rate_ranges": {
        "additionalProperties": {
          "properties": {
            "ranges": {
              "items": {
                "properties": {
                  "max_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "min_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "description": "Data rate ranges rejected by the device per frequency.",
        "type": "object"
      },
      "rejected_frequencies": {
        "description": "Frequencies rejected by the device.",
        "items": {
          "format": "uint64",
          "type": "string"
        },
        "type": "array"
      },
      "rx_windows_available": {
        "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "pending_session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "power_state": {
    "default": "POWER_UNKNOWN",
    "description": "Power state of the device.",
    "enum": [
      "POWER_UNKNOWN",
      "POWER_BATTERY",
      "POWER_EXTERNAL"
    ],
    "type": "string"
  },
  "provisioner_id": {
    "description": "ID of the provisioner. Stored in Join Server.",
    "type": "string"
  },
  "provisioning_data": {
    "description": "Vendor-specific provisioning data. Stored in Join Server.",
    "type": "object"
  },
  "queued_application_downlinks": {
    "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
    "items": {
      "properties": {
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Attributes for devices, set by the Application Server while handling the message.",
          "type": "object"
        },
        "class_b_c": {
          "properties": {
            "absolute_time": {
              "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
              "format": "date-time",
              "type": "string"
            },
            "gateways": {
              "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
              "items": {
                "properties": {
                  "antenna_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "gateway_ids": {
                    "properties": {
                      "eui": {
                        "description": "Secondary identifier, which can only be used in specific requests.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "gateway_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "group_index": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "confirmed": {
          "type": "boolean"
        },
        "confirmed_retry": {
          "properties": {
            "attempt": {
              "description": "The number of attempted confirmed downlink acknowledgements.",
              "format": "int64",
              "type": "integer"
            },
            "max_attempts": {
              "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "correlation_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decoded_payload": {
          "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
          "type": "object"
        },
        "decoded_payload_warnings": {
          "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "f_cnt": {
          "format": "int64",
          "type": "integer"
        },
        "f_port": {
          "format": "int64",
          "type": "integer"
        },
        "frm_payload": {
          "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
          "format": "byte",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "End device location metadata, set by the Application Server while handling the message.",
          "type": "object"
        },
        "network_ids": {
          "description": "Identifies a Network Server.",
          "properties": {
            "cluster_address": {
              "description": "Cluster address of the Network Server.",
              "type": "string"
            },
            "cluster_id": {
              "description": "Cluster identifier of the Network Server.",
              "type": "string"
            },
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "example": "000013",
              "format": "string",
              "type": "string"
            },
            "ns_id": {
              "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "tenant_address": {
              "description": "Optional tenant address for multi-tenant deployments.",
              "type": "string"
            },
            "tenant_id": {
              "description": "Optional tenant identifier for multi-tenant deployments.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "priority": {
          "default": "LOWEST",
          "enum": [
            "LOWEST",
            "LOW",
            "BELOW_NORMAL",
            "NORMAL",
            "ABOVE_NORMAL",
            "HIGH",
            "HIGHEST"
          ],
          "type": "string"
        },
        "session_key_id": {
          "description": "Join Server issued identifier for the session keys used by this downlink.",
          "format": "byte",
          "type": "string"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "resets_join_nonces": {
    "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "root_keys": {
    "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
    "properties": {
      "app_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nwk_key": {
        "properties": {
          "encrypted_key": {
            "format": "byte",
            "type": "string"
          },
          "kek_label": {
            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
            "type": "string"
          },
          "key": {
            "description": "The unencrypted AES key.",
            "example": "0123456789ABCDEF0123456789ABCDEF",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "root_key_id": {
        "description": "Join Server issued identifier for the root keys.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "serial_number": {
    "type": "string"
  },
  "service_profile_id": {
    "description": "Default service profile. Stored in Entity Registry.",
    "type": "string"
  },
  "session": {
    "properties": {
      "dev_addr": {
        "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "keys": {
        "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
        "properties": {
          "app_s_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "f_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_s_enc_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "s_nwk_s_int_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "session_key_id": {
            "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
            "format": "byte",
            "type": "string"
          }
        },
        "type": "object"
      },
      "last_a_f_cnt_down": {
        "description": "Last application downlink frame counter value used. Application Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_conf_f_cnt_down": {
        "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "last_f_cnt_up": {
        "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
        "format": "int64",
        "type": "integer"
      },
      "last_n_f_cnt_down": {
        "description": "Last network downlink frame counter value used. Network Server only.",
        "format": "int64",
        "type": "integer"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "started_at": {
        "description": "Time when the session started. Network Server only.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "skip_payload_crypto": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
    "type": "boolean"
  },
  "skip_payload_crypto_override": {
    "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
    "type": "boolean"
  },
  "supports_class_b": {
    "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_class_c": {
    "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "supports_join": {
    "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
    "type": "boolean"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "used_dev_nonces": {
    "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
    "items": {
      "format": "int64",
      "type": "integer"
    },
    "type": "array"
  },
  "version_ids": {
    "description": "Identifies an end device model with version information.",
    "properties": {
      "band_id": {
        "type": "string"
      },
      "brand_id": {
        "type": "string"
      },
      "firmware_version": {
        "type": "string"
      },
      "hardware_version": {
        "type": "string"
      },
      "model_id": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

NsEndDeviceBatchRegistry

Manage batches of end devices on The Things Stack Network Server.

Expand Collapse

delete

/ns/applications/{application_ids.application_id}/devices/batch

Delete a list of devices within the same application.

Expand Collapse

This operation is atomic; either all devices are deleted or none. Devices not found are skipped and no error is returned.

Request Parameters
Field Type Required Description
application_ids.application_id string true
device_ids array
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

NsMACSettingsProfileRegistry

Manage MAC settings profiles on The Things Stack Network Server.

Expand Collapse

get

/ns/applications/{application_ids.application_id}/mac_settings_profiles

List lists the MAC settings profiles.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
field_mask string The names of the fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "mac_settings_profiles": {
    "description": "The MAC settings profiles.",
    "items": {
      "properties": {
        "end_devices_count": {
          "description": "Associated end devices counter.",
          "format": "int64",
          "type": "integer"
        },
        "ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "profile_id": {
              "description": "Profile ID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "mac_settings": {
          "properties": {
            "adr": {
              "description": "Adaptive Data Rate settings.",
              "properties": {
                "disabled": {
                  "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                  "type": "object"
                },
                "dynamic": {
                  "description": "Configuration options for dynamic ADR.",
                  "properties": {
                    "channel_steering": {
                      "description": "EXPERIMENTAL: Channel steering settings.",
                      "properties": {
                        "disabled": {
                          "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                          "type": "object"
                        },
                        "lora_narrow": {
                          "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "margin": {
                      "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "float",
                      "type": "number"
                    },
                    "max_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "max_nb_trans": {
                      "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_tx_power_index": {
                      "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "min_nb_trans": {
                      "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_tx_power_index": {
                      "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "overrides": {
                      "description": "EXPERIMENTAL: Configuration overrides.",
                      "properties": {
                        "data_rate_0": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_1": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_10": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_11": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_12": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_13": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_14": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_15": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_2": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_3": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_4": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_5": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_6": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_7": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_8": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_9": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "static": {
                  "description": "Configuration options for static ADR.",
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "description": "Number of retransmissions.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "description": "Transmission power index to use.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "adr_margin": {
              "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
              "format": "float",
              "type": "number"
            },
            "beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "class_b_c_downlink_interval": {
              "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
              "type": "string"
            },
            "class_b_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "class_c_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "desired_adr_ack_delay_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_adr_ack_limit_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_eirp": {
              "properties": {
                "value": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "downlink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "factory_preset_frequencies": {
              "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "resets_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "schedule_downlinks": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "status_count_periodicity": {
              "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "format": "int64",
              "type": "integer"
            },
            "status_time_periodicity": {
              "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "supports_32_bit_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "uplink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "use_adr": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/ns/applications/{mac_settings_profile.ids.application_ids.application_id}/mac_settings_profiles

Create creates a new MAC settings profile.

Expand Collapse

Request Parameters
Field Type Required Description
mac_settings_profile.ids.application_ids.application_id string true
Request Body
Show JSON Schema
{
  "mac_settings_profile": {
    "description": "The MAC settings profile to create.",
    "properties": {
      "end_devices_count": {
        "description": "Associated end devices counter.",
        "format": "int64",
        "type": "integer"
      },
      "ids": {
        "description": "Profile identifiers.",
        "properties": {
          "application_ids": {
            "description": "Application IDs.",
            "title": "Application IDs.",
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "title": "Profile identifiers.",
        "type": "object"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "title": "The MAC settings profile to create.",
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "mac_settings_profile": {
    "properties": {
      "end_devices_count": {
        "description": "Associated end devices counter.",
        "format": "int64",
        "type": "integer"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/ns/applications/{mac_settings_profile_ids.application_ids.application_id}/mac_settings_profiles/{mac_settings_profile_ids.profile_id}

Delete deletes the MAC settings profile that matches the given identifiers.

Expand Collapse

Request Parameters
Field Type Required Description
mac_settings_profile_ids.application_ids.application_id string true
mac_settings_profile_ids.profile_id string true Profile ID.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/ns/applications/{mac_settings_profile_ids.application_ids.application_id}/mac_settings_profiles/{mac_settings_profile_ids.profile_id}

Get returns the MAC settings profile that matches the given identifiers.

Expand Collapse

Request Parameters
Field Type Required Description
mac_settings_profile_ids.application_ids.application_id string true
mac_settings_profile_ids.profile_id string true Profile ID.
field_mask string The names of the fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "mac_settings_profile": {
    "properties": {
      "end_devices_count": {
        "description": "Associated end devices counter.",
        "format": "int64",
        "type": "integer"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/ns/applications/{mac_settings_profile_ids.application_ids.application_id}/mac_settings_profiles/{mac_settings_profile_ids.profile_id}

Update updates the MAC settings profile that matches the given identifiers.

Expand Collapse

Request Parameters
Field Type Required Description
mac_settings_profile_ids.application_ids.application_id string true
mac_settings_profile_ids.profile_id string true Profile ID.
Request Body
Show JSON Schema
{
  "field_mask": {
    "description": "The names of the fields that should be updated.",
    "type": "string"
  },
  "mac_settings_profile": {
    "properties": {
      "end_devices_count": {
        "description": "Associated end devices counter.",
        "format": "int64",
        "type": "integer"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "mac_settings_profile_ids": {
    "description": "The identifiers of the MAC settings profile.",
    "properties": {
      "application_ids": {
        "description": "Application IDs.",
        "title": "Application IDs.",
        "type": "object"
      }
    },
    "title": "The identifiers of the MAC settings profile.",
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "mac_settings_profile": {
    "properties": {
      "end_devices_count": {
        "description": "Associated end devices counter.",
        "format": "int64",
        "type": "integer"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

NsRelayConfigurationService

Manage configuration of LoRaWAN® relay devices.

Expand Collapse

post

/ns/applications/{end_device_ids.application_ids.application_id}/relays

Create a relay.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "description": "End device identifiers of the relay.",
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "device_id": {
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "title": "End device identifiers of the relay.",
    "type": "object"
  },
  "settings": {
    "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
    "properties": {
      "served": {
        "properties": {
          "always": {
            "type": "object"
          },
          "backoff": {
            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "dynamic": {
            "properties": {
              "smart_enable_level": {
                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                "enum": [
                  "RELAY_SMART_ENABLE_LEVEL_8",
                  "RELAY_SMART_ENABLE_LEVEL_16",
                  "RELAY_SMART_ENABLE_LEVEL_32",
                  "RELAY_SMART_ENABLE_LEVEL_64"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "end_device_controlled": {
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving_device_id": {
            "description": "End device identifier of the serving end device.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serving": {
        "properties": {
          "cad_periodicity": {
            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
            "enum": [
              "RELAY_CAD_PERIODICITY_1_SECOND",
              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
            ],
            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
            "type": "string"
          },
          "default_channel_index": {
            "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "limits": {
            "properties": {
              "join_requests": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "notifications": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "overall": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "reset_behavior": {
                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                "enum": [
                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                ],
                "type": "string"
              },
              "uplink_messages": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "uplink_forwarding_rules": {
            "description": "Configured uplink forwarding rules.",
            "items": {
              "properties": {
                "device_id": {
                  "description": "End device identifier of the served end device.",
                  "type": "string"
                },
                "last_w_f_cnt": {
                  "description": "Last wake on radio frame counter used by the served end device.",
                  "format": "int64",
                  "type": "integer"
                },
                "limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "settings": {
    "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
    "properties": {
      "served": {
        "properties": {
          "always": {
            "type": "object"
          },
          "backoff": {
            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "dynamic": {
            "properties": {
              "smart_enable_level": {
                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                "enum": [
                  "RELAY_SMART_ENABLE_LEVEL_8",
                  "RELAY_SMART_ENABLE_LEVEL_16",
                  "RELAY_SMART_ENABLE_LEVEL_32",
                  "RELAY_SMART_ENABLE_LEVEL_64"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "end_device_controlled": {
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving_device_id": {
            "description": "End device identifier of the serving end device.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serving": {
        "properties": {
          "cad_periodicity": {
            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
            "enum": [
              "RELAY_CAD_PERIODICITY_1_SECOND",
              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
            ],
            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
            "type": "string"
          },
          "default_channel_index": {
            "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "limits": {
            "properties": {
              "join_requests": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "notifications": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "overall": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "reset_behavior": {
                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                "enum": [
                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                ],
                "type": "string"
              },
              "uplink_messages": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "uplink_forwarding_rules": {
            "description": "Configured uplink forwarding rules.",
            "items": {
              "properties": {
                "device_id": {
                  "description": "End device identifier of the served end device.",
                  "type": "string"
                },
                "last_w_f_cnt": {
                  "description": "Last wake on radio frame counter used by the served end device.",
                  "format": "int64",
                  "type": "integer"
                },
                "limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/ns/applications/{end_device_ids.application_ids.application_id}/relays/{end_device_ids.device_id}

Delete a relay.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/ns/applications/{end_device_ids.application_ids.application_id}/relays/{end_device_ids.device_id}

Get a relay.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
field_mask string Field mask of the fields to return.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "settings": {
    "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
    "properties": {
      "served": {
        "properties": {
          "always": {
            "type": "object"
          },
          "backoff": {
            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "dynamic": {
            "properties": {
              "smart_enable_level": {
                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                "enum": [
                  "RELAY_SMART_ENABLE_LEVEL_8",
                  "RELAY_SMART_ENABLE_LEVEL_16",
                  "RELAY_SMART_ENABLE_LEVEL_32",
                  "RELAY_SMART_ENABLE_LEVEL_64"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "end_device_controlled": {
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving_device_id": {
            "description": "End device identifier of the serving end device.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serving": {
        "properties": {
          "cad_periodicity": {
            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
            "enum": [
              "RELAY_CAD_PERIODICITY_1_SECOND",
              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
            ],
            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
            "type": "string"
          },
          "default_channel_index": {
            "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "limits": {
            "properties": {
              "join_requests": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "notifications": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "overall": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "reset_behavior": {
                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                "enum": [
                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                ],
                "type": "string"
              },
              "uplink_messages": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "uplink_forwarding_rules": {
            "description": "Configured uplink forwarding rules.",
            "items": {
              "properties": {
                "device_id": {
                  "description": "End device identifier of the served end device.",
                  "type": "string"
                },
                "last_w_f_cnt": {
                  "description": "Last wake on radio frame counter used by the served end device.",
                  "format": "int64",
                  "type": "integer"
                },
                "limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/ns/applications/{end_device_ids.application_ids.application_id}/relays/{end_device_ids.device_id}

Update a relay.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "description": "End device identifiers of the relay.",
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "title": "End device identifiers of the relay.",
    "type": "object"
  },
  "field_mask": {
    "description": "Field mask of the fields to update.",
    "type": "string"
  },
  "settings": {
    "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
    "properties": {
      "served": {
        "properties": {
          "always": {
            "type": "object"
          },
          "backoff": {
            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "dynamic": {
            "properties": {
              "smart_enable_level": {
                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                "enum": [
                  "RELAY_SMART_ENABLE_LEVEL_8",
                  "RELAY_SMART_ENABLE_LEVEL_16",
                  "RELAY_SMART_ENABLE_LEVEL_32",
                  "RELAY_SMART_ENABLE_LEVEL_64"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "end_device_controlled": {
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving_device_id": {
            "description": "End device identifier of the serving end device.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serving": {
        "properties": {
          "cad_periodicity": {
            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
            "enum": [
              "RELAY_CAD_PERIODICITY_1_SECOND",
              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
            ],
            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
            "type": "string"
          },
          "default_channel_index": {
            "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "limits": {
            "properties": {
              "join_requests": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "notifications": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "overall": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "reset_behavior": {
                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                "enum": [
                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                ],
                "type": "string"
              },
              "uplink_messages": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "uplink_forwarding_rules": {
            "description": "Configured uplink forwarding rules.",
            "items": {
              "properties": {
                "device_id": {
                  "description": "End device identifier of the served end device.",
                  "type": "string"
                },
                "last_w_f_cnt": {
                  "description": "Last wake on radio frame counter used by the served end device.",
                  "format": "int64",
                  "type": "integer"
                },
                "limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "settings": {
    "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
    "properties": {
      "served": {
        "properties": {
          "always": {
            "type": "object"
          },
          "backoff": {
            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "dynamic": {
            "properties": {
              "smart_enable_level": {
                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                "enum": [
                  "RELAY_SMART_ENABLE_LEVEL_8",
                  "RELAY_SMART_ENABLE_LEVEL_16",
                  "RELAY_SMART_ENABLE_LEVEL_32",
                  "RELAY_SMART_ENABLE_LEVEL_64"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "end_device_controlled": {
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serving_device_id": {
            "description": "End device identifier of the serving end device.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serving": {
        "properties": {
          "cad_periodicity": {
            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
            "enum": [
              "RELAY_CAD_PERIODICITY_1_SECOND",
              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
            ],
            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
            "type": "string"
          },
          "default_channel_index": {
            "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "limits": {
            "properties": {
              "join_requests": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "notifications": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "overall": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "reset_behavior": {
                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                "enum": [
                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                ],
                "type": "string"
              },
              "uplink_messages": {
                "properties": {
                  "bucket_size": {
                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                    "enum": [
                      "RELAY_LIMIT_BUCKET_SIZE_1",
                      "RELAY_LIMIT_BUCKET_SIZE_2",
                      "RELAY_LIMIT_BUCKET_SIZE_4",
                      "RELAY_LIMIT_BUCKET_SIZE_12"
                    ],
                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                    "type": "string"
                  },
                  "reload_rate": {
                    "description": "The number of tokens which are replenished in the bucket every hour.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "second_channel": {
            "properties": {
              "ack_offset": {
                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                "enum": [
                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                ],
                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                "type": "string"
              },
              "data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "frequency": {
                "description": "The frequency (Hz) used by the wake on radio message.",
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "uplink_forwarding_rules": {
            "description": "Configured uplink forwarding rules.",
            "items": {
              "properties": {
                "device_id": {
                  "description": "End device identifier of the served end device.",
                  "type": "string"
                },
                "last_w_f_cnt": {
                  "description": "Last wake on radio frame counter used by the served end device.",
                  "format": "int64",
                  "type": "integer"
                },
                "limits": {
                  "properties": {
                    "bucket_size": {
                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                      "enum": [
                        "RELAY_LIMIT_BUCKET_SIZE_1",
                        "RELAY_LIMIT_BUCKET_SIZE_2",
                        "RELAY_LIMIT_BUCKET_SIZE_4",
                        "RELAY_LIMIT_BUCKET_SIZE_12"
                      ],
                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                      "type": "string"
                    },
                    "reload_rate": {
                      "description": "The number of tokens which are replenished in the bucket every hour.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/ns/applications/{end_device_ids.application_ids.application_id}/relays/{end_device_ids.device_id}/uplink-forwarding-rules

List uplink forwarding rules.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
field_mask string Field mask of the fields to return.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "rules": {
    "description": "Uplink forwarding rules.",
    "items": {
      "properties": {
        "device_id": {
          "description": "End device identifier of the served end device.",
          "type": "string"
        },
        "last_w_f_cnt": {
          "description": "Last wake on radio frame counter used by the served end device.",
          "format": "int64",
          "type": "integer"
        },
        "limits": {
          "properties": {
            "bucket_size": {
              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
              "enum": [
                "RELAY_LIMIT_BUCKET_SIZE_1",
                "RELAY_LIMIT_BUCKET_SIZE_2",
                "RELAY_LIMIT_BUCKET_SIZE_4",
                "RELAY_LIMIT_BUCKET_SIZE_12"
              ],
              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
              "type": "string"
            },
            "reload_rate": {
              "description": "The number of tokens which are replenished in the bucket every hour.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "session_key_id": {
          "description": "Session key ID of the session keys used to derive the root relay session key.",
          "format": "byte",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/ns/applications/{end_device_ids.application_ids.application_id}/relays/{end_device_ids.device_id}/uplink-forwarding-rules

Create an uplink forwarding rule.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "description": "End device identifiers of the relay.",
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "title": "End device identifiers of the relay.",
    "type": "object"
  },
  "index": {
    "description": "Index of the uplink forwarding rule.",
    "format": "int64",
    "type": "integer"
  },
  "rule": {
    "properties": {
      "device_id": {
        "description": "End device identifier of the served end device.",
        "type": "string"
      },
      "last_w_f_cnt": {
        "description": "Last wake on radio frame counter used by the served end device.",
        "format": "int64",
        "type": "integer"
      },
      "limits": {
        "properties": {
          "bucket_size": {
            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
            "enum": [
              "RELAY_LIMIT_BUCKET_SIZE_1",
              "RELAY_LIMIT_BUCKET_SIZE_2",
              "RELAY_LIMIT_BUCKET_SIZE_4",
              "RELAY_LIMIT_BUCKET_SIZE_12"
            ],
            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
            "type": "string"
          },
          "reload_rate": {
            "description": "The number of tokens which are replenished in the bucket every hour.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "session_key_id": {
        "description": "Session key ID of the session keys used to derive the root relay session key.",
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "rule": {
    "properties": {
      "device_id": {
        "description": "End device identifier of the served end device.",
        "type": "string"
      },
      "last_w_f_cnt": {
        "description": "Last wake on radio frame counter used by the served end device.",
        "format": "int64",
        "type": "integer"
      },
      "limits": {
        "properties": {
          "bucket_size": {
            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
            "enum": [
              "RELAY_LIMIT_BUCKET_SIZE_1",
              "RELAY_LIMIT_BUCKET_SIZE_2",
              "RELAY_LIMIT_BUCKET_SIZE_4",
              "RELAY_LIMIT_BUCKET_SIZE_12"
            ],
            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
            "type": "string"
          },
          "reload_rate": {
            "description": "The number of tokens which are replenished in the bucket every hour.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "session_key_id": {
        "description": "Session key ID of the session keys used to derive the root relay session key.",
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/ns/applications/{end_device_ids.application_ids.application_id}/relays/{end_device_ids.device_id}/uplink-forwarding-rules/{index}

Delete an uplink forwarding rule.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
index integer true Index of the uplink forwarding rule.
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/ns/applications/{end_device_ids.application_ids.application_id}/relays/{end_device_ids.device_id}/uplink-forwarding-rules/{index}

Get an uplink forwarding rule.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
index integer true Index of the uplink forwarding rule.
end_device_ids.dev_eui string The LoRaWAN DevEUI.
end_device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
end_device_ids.dev_addr string The LoRaWAN DevAddr.
field_mask string Field mask of the fields to return.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "rule": {
    "properties": {
      "device_id": {
        "description": "End device identifier of the served end device.",
        "type": "string"
      },
      "last_w_f_cnt": {
        "description": "Last wake on radio frame counter used by the served end device.",
        "format": "int64",
        "type": "integer"
      },
      "limits": {
        "properties": {
          "bucket_size": {
            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
            "enum": [
              "RELAY_LIMIT_BUCKET_SIZE_1",
              "RELAY_LIMIT_BUCKET_SIZE_2",
              "RELAY_LIMIT_BUCKET_SIZE_4",
              "RELAY_LIMIT_BUCKET_SIZE_12"
            ],
            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
            "type": "string"
          },
          "reload_rate": {
            "description": "The number of tokens which are replenished in the bucket every hour.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "session_key_id": {
        "description": "Session key ID of the session keys used to derive the root relay session key.",
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/ns/applications/{end_device_ids.application_ids.application_id}/relays/{end_device_ids.device_id}/uplink-forwarding-rules/{index}

Update an uplink forwarding rule.

Expand Collapse

Request Parameters
Field Type Required Description
end_device_ids.application_ids.application_id string true
end_device_ids.device_id string true
index integer true Index of the uplink forwarding rule.
Request Body
Show JSON Schema
{
  "end_device_ids": {
    "description": "End device identifiers of the relay.",
    "properties": {
      "application_ids": {
        "type": "object"
      },
      "dev_addr": {
        "description": "The LoRaWAN DevAddr.",
        "example": "2600ABCD",
        "format": "string",
        "type": "string"
      },
      "dev_eui": {
        "description": "The LoRaWAN DevEUI.",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      },
      "join_eui": {
        "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
        "example": "70B3D57ED000ABCD",
        "format": "string",
        "type": "string"
      }
    },
    "title": "End device identifiers of the relay.",
    "type": "object"
  },
  "field_mask": {
    "description": "Field mask of the fields to update.",
    "type": "string"
  },
  "rule": {
    "properties": {
      "device_id": {
        "description": "End device identifier of the served end device.",
        "type": "string"
      },
      "last_w_f_cnt": {
        "description": "Last wake on radio frame counter used by the served end device.",
        "format": "int64",
        "type": "integer"
      },
      "limits": {
        "properties": {
          "bucket_size": {
            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
            "enum": [
              "RELAY_LIMIT_BUCKET_SIZE_1",
              "RELAY_LIMIT_BUCKET_SIZE_2",
              "RELAY_LIMIT_BUCKET_SIZE_4",
              "RELAY_LIMIT_BUCKET_SIZE_12"
            ],
            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
            "type": "string"
          },
          "reload_rate": {
            "description": "The number of tokens which are replenished in the bucket every hour.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "session_key_id": {
        "description": "Session key ID of the session keys used to derive the root relay session key.",
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "rule": {
    "properties": {
      "device_id": {
        "description": "End device identifier of the served end device.",
        "type": "string"
      },
      "last_w_f_cnt": {
        "description": "Last wake on radio frame counter used by the served end device.",
        "format": "int64",
        "type": "integer"
      },
      "limits": {
        "properties": {
          "bucket_size": {
            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
            "enum": [
              "RELAY_LIMIT_BUCKET_SIZE_1",
              "RELAY_LIMIT_BUCKET_SIZE_2",
              "RELAY_LIMIT_BUCKET_SIZE_4",
              "RELAY_LIMIT_BUCKET_SIZE_12"
            ],
            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
            "type": "string"
          },
          "reload_rate": {
            "description": "The number of tokens which are replenished in the bucket every hour.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "session_key_id": {
        "description": "Session key ID of the session keys used to derive the root relay session key.",
        "format": "byte",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

NotificationService

Read and manage notifications.

Expand Collapse

get

/users/{receiver_ids.user_id}/notifications

List the notifications for a user or an organization.

Expand Collapse

When called with user credentials and empty receiver_ids, this will list notifications for the current user and its organizations.

Request Parameters
Field Type Required Description
receiver_ids.user_id string true This ID shares namespace with organization IDs.
receiver_ids.email string Secondary identifier, which can only be used in specific requests.
status array Select notifications with these statuses. An empty list is interpreted as "all".
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "notifications": {
    "items": {
      "properties": {
        "created_at": {
          "description": "The time when the notification was triggered.",
          "format": "date-time",
          "type": "string"
        },
        "data": {
          "additionalProperties": {},
          "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
          "properties": {
            "@type": {
              "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "email": {
          "description": "Whether an email was sent for the notification.",
          "type": "boolean"
        },
        "entity_ids": {
          "description": "EntityIdentifiers contains one of the possible entity identifiers.",
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "client_ids": {
              "properties": {
                "client_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_ids": {
              "properties": {
                "application_ids": {
                  "properties": {
                    "application_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dev_addr": {
                  "description": "The LoRaWAN DevAddr.",
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "dev_eui": {
                  "description": "The LoRaWAN DevEUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "join_eui": {
                  "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "gateway_ids": {
              "properties": {
                "eui": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "gateway_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "id": {
          "description": "The immutable ID of the notification. Generated by the server.",
          "type": "string"
        },
        "notification_type": {
          "description": "The type of this notification.\nTODO: Replace with type NotificationType in v4 https://github.com/TheThingsNetwork/lorawan-stack/issues/7384.",
          "type": "string"
        },
        "receivers": {
          "description": "Relation of the notification receiver to the entity.",
          "items": {
            "default": "NOTIFICATION_RECEIVER_UNKNOWN",
            "description": " - NOTIFICATION_RECEIVER_COLLABORATOR: Notification is received by collaborators of the entity.\nIf the collaborator is an organization, the notification is received by organization members.\n - NOTIFICATION_RECEIVER_ADMINISTRATIVE_CONTACT: Notification is received by administrative contact of the entity.\nIf this is an organization, the notification is received by organization members.\n - NOTIFICATION_RECEIVER_TECHNICAL_CONTACT: Notification is received by technical contact of the entity.\nIf this is an organization, the notification is received by organization members.",
            "enum": [
              "NOTIFICATION_RECEIVER_UNKNOWN",
              "NOTIFICATION_RECEIVER_COLLABORATOR",
              "NOTIFICATION_RECEIVER_ADMINISTRATIVE_CONTACT",
              "NOTIFICATION_RECEIVER_TECHNICAL_CONTACT"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "sender_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "status": {
          "default": "NOTIFICATION_STATUS_UNSEEN",
          "enum": [
            "NOTIFICATION_STATUS_UNSEEN",
            "NOTIFICATION_STATUS_SEEN",
            "NOTIFICATION_STATUS_ARCHIVED"
          ],
          "type": "string"
        },
        "status_updated_at": {
          "description": "The time when the notification status was updated.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

patch

/users/{receiver_ids.user_id}/notifications

Batch-update multiple notifications to the same status.

Expand Collapse

Request Parameters
Field Type Required Description
receiver_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "ids": {
    "description": "The IDs of the notifications to update the status of.",
    "items": {
      "type": "string"
    },
    "type": "array"
  },
  "receiver_ids": {
    "description": "The IDs of the receiving user.",
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      }
    },
    "title": "The IDs of the receiving user.",
    "type": "object"
  },
  "status": {
    "default": "NOTIFICATION_STATUS_UNSEEN",
    "enum": [
      "NOTIFICATION_STATUS_UNSEEN",
      "NOTIFICATION_STATUS_SEEN",
      "NOTIFICATION_STATUS_ARCHIVED"
    ],
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

OAuthAuthorizationRegistry

Manage OAuth client authorizations for users.

Expand Collapse

get

/users/{user_ids.user_id}/authorizations

List OAuth clients that are authorized by the user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "authorizations": {
    "items": {
      "properties": {
        "client_ids": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "rights": {
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/authorizations/{client_ids.client_id}

Delete (de-authorize) an OAuth client for the user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
client_ids.client_id string true
user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/users/{user_ids.user_id}/authorizations/{client_ids.client_id}/tokens

List OAuth access tokens issued to the OAuth client on behalf of the user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
client_ids.client_id string true
user_ids.email string Secondary identifier, which can only be used in specific requests.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "tokens": {
    "items": {
      "properties": {
        "access_token": {
          "type": "string"
        },
        "client_ids": {
          "properties": {
            "client_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "expires_at": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "refresh_token": {
          "type": "string"
        },
        "rights": {
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "user_session_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/authorizations/{client_ids.client_id}/tokens/{id}

Delete (invalidate) an OAuth access token.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
client_ids.client_id string true
id string true
user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

OrganizationRegistry

Manage organizations.

Expand Collapse

get

/organizations

List organizations where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the organizations the caller has access to. Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.user_id string This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the organization fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted organizations.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "organizations": {
    "items": {
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "application_limit": {
          "description": "The maximum number of applications of the organization.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this organization. Typically used for organizing organizations or for storing integration-specific data.",
          "type": "object"
        },
        "client_limit": {
          "description": "The maximum number of clients of the organization.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "contact_info": {
          "description": "Contact information for this organization. Typically used to indicate who to contact with security/billing questions about the organization.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the organization was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the organization was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the organization.",
          "type": "string"
        },
        "fanout_notifications": {
          "description": "Determines if a notification will be sent to the collaborators. If false it, notifications will be sent only to the\nadministrative or technical contact.",
          "type": "boolean"
        },
        "gateway_limit": {
          "description": "The maximum number of gateways of the organization.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "ids": {
          "properties": {
            "organization_id": {
              "description": "This ID shares namespace with user IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the organization. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the organization was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/organizations/{organization.ids.organization_id}

Update the organization, changing the fields specified by the field mask to the provided values.

Expand Collapse

Request Parameters
Field Type Required Description
organization.ids.organization_id string true This ID shares namespace with user IDs.
Request Body
Show JSON Schema
{
  "field_mask": {
    "description": "The names of the organization fields that should be updated.",
    "type": "string"
  },
  "organization": {
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "application_limit": {
        "description": "The maximum number of applications of the organization.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this organization. Typically used for organizing organizations or for storing integration-specific data.",
        "type": "object"
      },
      "client_limit": {
        "description": "The maximum number of clients of the organization.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "contact_info": {
        "description": "Contact information for this organization. Typically used to indicate who to contact with security/billing questions about the organization.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the organization was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the organization was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the organization.",
        "type": "string"
      },
      "fanout_notifications": {
        "description": "Determines if a notification will be sent to the collaborators. If false it, notifications will be sent only to the\nadministrative or technical contact.",
        "type": "boolean"
      },
      "gateway_limit": {
        "description": "The maximum number of gateways of the organization.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "ids": {
        "description": "The identifiers of the organization. These are public and can be seen by any authenticated user in the network.",
        "title": "The identifiers of the organization. These are public and can be seen by any authenticated user in the network.",
        "type": "object"
      },
      "name": {
        "description": "The name of the organization. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "description": "When the organization was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "application_limit": {
    "description": "The maximum number of applications of the organization.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this organization. Typically used for organizing organizations or for storing integration-specific data.",
    "type": "object"
  },
  "client_limit": {
    "description": "The maximum number of clients of the organization.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "contact_info": {
    "description": "Contact information for this organization. Typically used to indicate who to contact with security/billing questions about the organization.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the organization was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the organization was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the organization.",
    "type": "string"
  },
  "fanout_notifications": {
    "description": "Determines if a notification will be sent to the collaborators. If false it, notifications will be sent only to the\nadministrative or technical contact.",
    "type": "boolean"
  },
  "gateway_limit": {
    "description": "The maximum number of gateways of the organization.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "organization_id": {
        "description": "This ID shares namespace with user IDs.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the organization. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the organization was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/organizations/{organization_ids.organization_id}

Get the organization with the given identifiers, selecting the fields specified in the field mask.

Expand Collapse

More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
field_mask string The names of the organization fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "application_limit": {
    "description": "The maximum number of applications of the organization.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this organization. Typically used for organizing organizations or for storing integration-specific data.",
    "type": "object"
  },
  "client_limit": {
    "description": "The maximum number of clients of the organization.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "contact_info": {
    "description": "Contact information for this organization. Typically used to indicate who to contact with security/billing questions about the organization.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the organization was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the organization was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the organization.",
    "type": "string"
  },
  "fanout_notifications": {
    "description": "Determines if a notification will be sent to the collaborators. If false it, notifications will be sent only to the\nadministrative or technical contact.",
    "type": "boolean"
  },
  "gateway_limit": {
    "description": "The maximum number of gateways of the organization.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "organization_id": {
        "description": "This ID shares namespace with user IDs.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the organization. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the organization was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/organizations/{organization_id}

Delete the organization.

Expand Collapse

This may not release the organization ID for reuse.

Request Parameters
Field Type Required Description
organization_id string true This ID shares namespace with user IDs.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/organizations/{organization_id}/purge

Purge the organization.

Expand Collapse

This will release the organization ID for reuse. The user is responsible for clearing data from any (external) integrations that may store and expose data by user or organization ID.

Request Parameters
Field Type Required Description
organization_id string true This ID shares namespace with user IDs.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/organizations/{organization_id}/restore

Restore a recently deleted organization.

Expand Collapse

Deployment configuration may specify if, and for how long after deletion, entities can be restored.

Request Parameters
Field Type Required Description
organization_id string true This ID shares namespace with user IDs.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/users/{collaborator.user_ids.user_id}/organizations

List organizations where the given user or organization is a direct collaborator.

Expand Collapse

If no user or organization is given, this returns the organizations the caller has access to. Similar to Get, this selects the fields given by the field mask. More or less fields may be returned, depending on the rights of the caller.

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator.organization_ids.organization_id string This ID shares namespace with user IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the organization fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted organizations.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "organizations": {
    "items": {
      "properties": {
        "administrative_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "application_limit": {
          "description": "The maximum number of applications of the organization.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this organization. Typically used for organizing organizations or for storing integration-specific data.",
          "type": "object"
        },
        "client_limit": {
          "description": "The maximum number of clients of the organization.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "contact_info": {
          "description": "Contact information for this organization. Typically used to indicate who to contact with security/billing questions about the organization.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the organization was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the organization was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the organization.",
          "type": "string"
        },
        "fanout_notifications": {
          "description": "Determines if a notification will be sent to the collaborators. If false it, notifications will be sent only to the\nadministrative or technical contact.",
          "type": "boolean"
        },
        "gateway_limit": {
          "description": "The maximum number of gateways of the organization.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "ids": {
          "properties": {
            "organization_id": {
              "description": "This ID shares namespace with user IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the organization. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "technical_contact": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "When the organization was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users/{collaborator.user_ids.user_id}/organizations

Create a new organization.

Expand Collapse

This also sets the given user as first collaborator with all possible rights.

Request Parameters
Field Type Required Description
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "collaborator": {
    "description": "Collaborator to grant all rights on the newly created application.\nNOTE: It is currently not possible to have organizations collaborating on\nother organizations.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "title": "Collaborator to grant all rights on the newly created application.\nNOTE: It is currently not possible to have organizations collaborating on\nother organizations.",
    "type": "object"
  },
  "organization": {
    "properties": {
      "administrative_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "application_limit": {
        "description": "The maximum number of applications of the organization.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this organization. Typically used for organizing organizations or for storing integration-specific data.",
        "type": "object"
      },
      "client_limit": {
        "description": "The maximum number of clients of the organization.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "contact_info": {
        "description": "Contact information for this organization. Typically used to indicate who to contact with security/billing questions about the organization.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the organization was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the organization was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the organization.",
        "type": "string"
      },
      "fanout_notifications": {
        "description": "Determines if a notification will be sent to the collaborators. If false it, notifications will be sent only to the\nadministrative or technical contact.",
        "type": "boolean"
      },
      "gateway_limit": {
        "description": "The maximum number of gateways of the organization.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": {
        "description": "The name of the organization. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "technical_contact": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "updated_at": {
        "description": "When the organization was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "application_limit": {
    "description": "The maximum number of applications of the organization.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this organization. Typically used for organizing organizations or for storing integration-specific data.",
    "type": "object"
  },
  "client_limit": {
    "description": "The maximum number of clients of the organization.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "contact_info": {
    "description": "Contact information for this organization. Typically used to indicate who to contact with security/billing questions about the organization.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the organization was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the organization was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the organization.",
    "type": "string"
  },
  "fanout_notifications": {
    "description": "Determines if a notification will be sent to the collaborators. If false it, notifications will be sent only to the\nadministrative or technical contact.",
    "type": "boolean"
  },
  "gateway_limit": {
    "description": "The maximum number of gateways of the organization.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "organization_id": {
        "description": "This ID shares namespace with user IDs.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the organization. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "technical_contact": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "When the organization was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

OrganizationAccess

Manage access to organizations

Expand Collapse

get

/organizations/{organization_ids.organization_id}/api-keys

List the API keys for this organization.

Expand Collapse

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
order string Order the results by this field path. Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "api_keys": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "expires_at": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
          "type": "string"
        },
        "key": {
          "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
          "type": "string"
        },
        "name": {
          "description": "User-defined (friendly) name for the API key.",
          "type": "string"
        },
        "rights": {
          "description": "Rights that are granted to this API key.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/organizations/{organization_ids.organization_id}/api-keys

Create an API key scoped to this organization.

Expand Collapse

Organization API keys can give access to the organization itself, as well as any application, gateway and OAuth client this organization is a collaborator of.

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
Request Body
Show JSON Schema
{
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "name": {
    "type": "string"
  },
  "organization_ids": {
    "type": "object"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/organizations/{organization_ids.organization_id}/api-keys/{api_key.id}

Update the rights of an API key of the organization.

Expand Collapse

This method can also be used to delete the API key, by giving it no rights. The caller is required to have all assigned or/and removed rights.

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
api_key.id string true Immutable and unique public identifier for the API key. Generated by the Access Server.
Request Body
Show JSON Schema
{
  "api_key": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "expires_at": {
        "format": "date-time",
        "type": "string"
      },
      "key": {
        "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
        "type": "string"
      },
      "name": {
        "description": "User-defined (friendly) name for the API key.",
        "type": "string"
      },
      "rights": {
        "description": "Rights that are granted to this API key.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the api key fields that should be updated.",
    "type": "string"
  },
  "organization_ids": {
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/organizations/{organization_ids.organization_id}/api-keys/{key_id}

Delete a single API key of this organization.

Expand Collapse

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
key_id string true
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/organizations/{organization_ids.organization_id}/api-keys/{key_id}

Get a single API key of this organization.

Expand Collapse

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
key_id string true Unique public identifier for the API key.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/organizations/{organization_ids.organization_id}/collaborator/user/{collaborator.user_ids.user_id}

Get the rights of a collaborator (member) of the organization.

Expand Collapse

Pseudo-rights in the response (such as the "_ALL" right) are not expanded.

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "ids": {
    "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
    "properties": {
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/organizations/{organization_ids.organization_id}/collaborators

List the collaborators on this organization.

Expand Collapse

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "collaborators": {
    "items": {
      "properties": {
        "ids": {
          "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
          "properties": {
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "rights": {
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/organizations/{organization_ids.organization_id}/collaborators

Set the rights of a collaborator (member) on the organization.

Expand Collapse

Organization collaborators can get access to the organization itself, as well as any application, gateway and OAuth client this organization is a collaborator of. This method can also be used to delete the collaborator, by giving them no rights. The caller is required to have all assigned or/and removed rights.

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
Request Body
Show JSON Schema
{
  "collaborator": {
    "properties": {
      "ids": {
        "description": "OrganizationOrUserIdentifiers contains either organization or user identifiers.",
        "properties": {
          "organization_ids": {
            "properties": {
              "organization_id": {
                "description": "This ID shares namespace with user IDs.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "user_ids": {
            "properties": {
              "email": {
                "description": "Secondary identifier, which can only be used in specific requests.",
                "type": "string"
              },
              "user_id": {
                "description": "This ID shares namespace with organization IDs.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "rights": {
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "organization_ids": {
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/organizations/{organization_ids.organization_id}/collaborators/user/{collaborator_ids.user_ids.user_id}

DeleteCollaborator removes a collaborator from an organization.

Expand Collapse

Request Parameters
Field Type Required Description
organization_ids.organization_id string true This ID shares namespace with user IDs.
collaborator_ids.user_ids.user_id string true This ID shares namespace with organization IDs.
collaborator_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/organizations/{organization_id}/rights

List the rights the caller has on this organization.

Expand Collapse

Request Parameters
Field Type Required Description
organization_id string true This ID shares namespace with user IDs.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

GsPba

The GsPba service connects a Gateway Server to a Packet Broker Agent. This is an inter-component service and is not intended to be used by end users.

Expand Collapse

NsPba

The NsPba service connects a Network Server to a Packet Broker Agent. This is an inter-component service and is not intended to be used by end users.

Expand Collapse

Pba

Manage peering via Packet Broker.

Expand Collapse

get

/pba/forwarders/policies

List the routing policies that Forwarders configured with Packet Broker Agent as Home Network.

Expand Collapse

Listing routing policies requires administrative access.

Request Parameters
Field Type Required Description
home_network_id.net_id integer LoRa Alliance NetID.
home_network_id.tenant_id string Tenant identifier if the registration leases DevAddr blocks from a NetID.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "policies": {
    "items": {
      "properties": {
        "downlink": {
          "properties": {
            "application_data": {
              "description": "Allow downlink messages with FPort between 1 and 255.",
              "type": "boolean"
            },
            "join_accept": {
              "description": "Allow join-accept messages.",
              "type": "boolean"
            },
            "mac_data": {
              "description": "Allow downlink messages with FPort of 0.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "forwarder_id": {
          "properties": {
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "format": "int64",
              "type": "integer"
            },
            "tenant_id": {
              "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "home_network_id": {
          "properties": {
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "format": "int64",
              "type": "integer"
            },
            "tenant_id": {
              "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "Timestamp when the policy got last updated.",
          "format": "date-time",
          "type": "string"
        },
        "uplink": {
          "properties": {
            "application_data": {
              "description": "Forward uplink messages with FPort between 1 and 255.",
              "type": "boolean"
            },
            "join_request": {
              "description": "Forward join-request messages.",
              "type": "boolean"
            },
            "localization": {
              "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
              "type": "boolean"
            },
            "mac_data": {
              "description": "Forward uplink messages with FPort of 0.",
              "type": "boolean"
            },
            "signal_quality": {
              "description": "Forward RSSI and SNR.",
              "type": "boolean"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/pba/home-networks

List the listed home networks for which routing policies can be configured.

Expand Collapse

Listing home networks requires administrative access.

Request Parameters
Field Type Required Description
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
tenant_id_contains string Filter by tenant ID.
name_contains string Filter by name.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "networks": {
    "items": {
      "properties": {
        "administrative_contact": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "dev_addr_blocks": {
          "description": "DevAddr blocks that are assigned to this registration.",
          "items": {
            "properties": {
              "dev_addr_prefix": {
                "properties": {
                  "dev_addr": {
                    "description": "DevAddr base.",
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "length": {
                    "description": "Number of most significant bits from dev_addr that are used as prefix.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "home_network_cluster_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "id": {
          "properties": {
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "format": "int64",
              "type": "integer"
            },
            "tenant_id": {
              "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "listed": {
          "description": "Whether the network is listed so it can be viewed by other networks.",
          "type": "boolean"
        },
        "name": {
          "description": "Name of the network.",
          "type": "string"
        },
        "technical_contact": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/pba/home-networks/gateway-visibilities/default

Deletes the default gateway visibility.

Expand Collapse

Deleting gateway visibilities requires administrative access.

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/pba/home-networks/gateway-visibilities/default

Get the default gateway visibility.

Expand Collapse

Getting gateway visibilities requires administrative access.

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "updated_at": {
    "description": "Timestamp when the policy got last updated.",
    "format": "date-time",
    "type": "string"
  },
  "visibility": {
    "properties": {
      "antenna_count": {
        "description": "Show antenna count.",
        "type": "boolean"
      },
      "antenna_placement": {
        "description": "Show antenna placement (indoor/outdoor).",
        "type": "boolean"
      },
      "contact_info": {
        "description": "Show contact information.",
        "type": "boolean"
      },
      "fine_timestamps": {
        "description": "Show whether the gateway produces fine timestamps.",
        "type": "boolean"
      },
      "frequency_plan": {
        "description": "Show frequency plan.",
        "type": "boolean"
      },
      "location": {
        "description": "Show location.",
        "type": "boolean"
      },
      "packet_rates": {
        "description": "Show receive and transmission packet rates.",
        "type": "boolean"
      },
      "status": {
        "description": "Show status (online/offline).",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/pba/home-networks/gateway-visibilities/default

Set the default gateway visibility.

Expand Collapse

Setting gateway visibilities requires administrative access.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "visibility": {
    "properties": {
      "antenna_count": {
        "description": "Show antenna count.",
        "type": "boolean"
      },
      "antenna_placement": {
        "description": "Show antenna placement (indoor/outdoor).",
        "type": "boolean"
      },
      "contact_info": {
        "description": "Show contact information.",
        "type": "boolean"
      },
      "fine_timestamps": {
        "description": "Show whether the gateway produces fine timestamps.",
        "type": "boolean"
      },
      "frequency_plan": {
        "description": "Show frequency plan.",
        "type": "boolean"
      },
      "location": {
        "description": "Show location.",
        "type": "boolean"
      },
      "packet_rates": {
        "description": "Show receive and transmission packet rates.",
        "type": "boolean"
      },
      "status": {
        "description": "Show status (online/offline).",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/pba/home-networks/gateway-visibilities/default

Set the default gateway visibility.

Expand Collapse

Setting gateway visibilities requires administrative access.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "visibility": {
    "properties": {
      "antenna_count": {
        "description": "Show antenna count.",
        "type": "boolean"
      },
      "antenna_placement": {
        "description": "Show antenna placement (indoor/outdoor).",
        "type": "boolean"
      },
      "contact_info": {
        "description": "Show contact information.",
        "type": "boolean"
      },
      "fine_timestamps": {
        "description": "Show whether the gateway produces fine timestamps.",
        "type": "boolean"
      },
      "frequency_plan": {
        "description": "Show frequency plan.",
        "type": "boolean"
      },
      "location": {
        "description": "Show location.",
        "type": "boolean"
      },
      "packet_rates": {
        "description": "Show receive and transmission packet rates.",
        "type": "boolean"
      },
      "status": {
        "description": "Show status (online/offline).",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/pba/home-networks/policies

List the routing policies that Packet Broker Agent as Forwarder configured with Home Networks.

Expand Collapse

Listing routing policies requires administrative access.

Request Parameters
Field Type Required Description
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "policies": {
    "items": {
      "properties": {
        "downlink": {
          "properties": {
            "application_data": {
              "description": "Allow downlink messages with FPort between 1 and 255.",
              "type": "boolean"
            },
            "join_accept": {
              "description": "Allow join-accept messages.",
              "type": "boolean"
            },
            "mac_data": {
              "description": "Allow downlink messages with FPort of 0.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "forwarder_id": {
          "properties": {
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "format": "int64",
              "type": "integer"
            },
            "tenant_id": {
              "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "home_network_id": {
          "properties": {
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "format": "int64",
              "type": "integer"
            },
            "tenant_id": {
              "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "updated_at": {
          "description": "Timestamp when the policy got last updated.",
          "format": "date-time",
          "type": "string"
        },
        "uplink": {
          "properties": {
            "application_data": {
              "description": "Forward uplink messages with FPort between 1 and 255.",
              "type": "boolean"
            },
            "join_request": {
              "description": "Forward join-request messages.",
              "type": "boolean"
            },
            "localization": {
              "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
              "type": "boolean"
            },
            "mac_data": {
              "description": "Forward uplink messages with FPort of 0.",
              "type": "boolean"
            },
            "signal_quality": {
              "description": "Forward RSSI and SNR.",
              "type": "boolean"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/pba/home-networks/policies/default

Deletes the default routing policy.

Expand Collapse

Deleting routing policies requires administrative access.

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/pba/home-networks/policies/default

Get the default routing policy.

Expand Collapse

Getting routing policies requires administrative access.

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "downlink": {
    "properties": {
      "application_data": {
        "description": "Allow downlink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_accept": {
        "description": "Allow join-accept messages.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Allow downlink messages with FPort of 0.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "Timestamp when the policy got last updated.",
    "format": "date-time",
    "type": "string"
  },
  "uplink": {
    "properties": {
      "application_data": {
        "description": "Forward uplink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_request": {
        "description": "Forward join-request messages.",
        "type": "boolean"
      },
      "localization": {
        "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Forward uplink messages with FPort of 0.",
        "type": "boolean"
      },
      "signal_quality": {
        "description": "Forward RSSI and SNR.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/pba/home-networks/policies/default

Set the default routing policy.

Expand Collapse

Setting routing policies requires administrative access.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "downlink": {
    "properties": {
      "application_data": {
        "description": "Allow downlink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_accept": {
        "description": "Allow join-accept messages.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Allow downlink messages with FPort of 0.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "uplink": {
    "properties": {
      "application_data": {
        "description": "Forward uplink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_request": {
        "description": "Forward join-request messages.",
        "type": "boolean"
      },
      "localization": {
        "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Forward uplink messages with FPort of 0.",
        "type": "boolean"
      },
      "signal_quality": {
        "description": "Forward RSSI and SNR.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/pba/home-networks/policies/default

Set the default routing policy.

Expand Collapse

Setting routing policies requires administrative access.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "downlink": {
    "properties": {
      "application_data": {
        "description": "Allow downlink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_accept": {
        "description": "Allow join-accept messages.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Allow downlink messages with FPort of 0.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "uplink": {
    "properties": {
      "application_data": {
        "description": "Forward uplink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_request": {
        "description": "Forward join-request messages.",
        "type": "boolean"
      },
      "localization": {
        "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Forward uplink messages with FPort of 0.",
        "type": "boolean"
      },
      "signal_quality": {
        "description": "Forward RSSI and SNR.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/pba/home-networks/policies/{home_network_id.net_id}

Set the routing policy for the given Home Network.

Expand Collapse

Setting routing policies requires administrative access.

Request Parameters
Field Type Required Description
home_network_id.net_id integer true LoRa Alliance NetID.
Request Body
Show JSON Schema
{
  "downlink": {
    "properties": {
      "application_data": {
        "description": "Allow downlink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_accept": {
        "description": "Allow join-accept messages.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Allow downlink messages with FPort of 0.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "home_network_id": {
    "description": "Packet Broker identifier of the Home Network.",
    "title": "Packet Broker identifier of the Home Network.",
    "type": "object"
  },
  "uplink": {
    "properties": {
      "application_data": {
        "description": "Forward uplink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_request": {
        "description": "Forward join-request messages.",
        "type": "boolean"
      },
      "localization": {
        "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Forward uplink messages with FPort of 0.",
        "type": "boolean"
      },
      "signal_quality": {
        "description": "Forward RSSI and SNR.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/pba/home-networks/policies/{home_network_id.net_id}

Set the routing policy for the given Home Network.

Expand Collapse

Setting routing policies requires administrative access.

Request Parameters
Field Type Required Description
home_network_id.net_id integer true LoRa Alliance NetID.
Request Body
Show JSON Schema
{
  "downlink": {
    "properties": {
      "application_data": {
        "description": "Allow downlink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_accept": {
        "description": "Allow join-accept messages.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Allow downlink messages with FPort of 0.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "home_network_id": {
    "description": "Packet Broker identifier of the Home Network.",
    "title": "Packet Broker identifier of the Home Network.",
    "type": "object"
  },
  "uplink": {
    "properties": {
      "application_data": {
        "description": "Forward uplink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_request": {
        "description": "Forward join-request messages.",
        "type": "boolean"
      },
      "localization": {
        "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Forward uplink messages with FPort of 0.",
        "type": "boolean"
      },
      "signal_quality": {
        "description": "Forward RSSI and SNR.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/pba/home-networks/policies/{home_network_id.net_id}/{home_network_id.tenant_id}

Set the routing policy for the given Home Network.

Expand Collapse

Setting routing policies requires administrative access.

Request Parameters
Field Type Required Description
home_network_id.net_id integer true LoRa Alliance NetID.
home_network_id.tenant_id string true Tenant identifier if the registration leases DevAddr blocks from a NetID.
Request Body
Show JSON Schema
{
  "downlink": {
    "properties": {
      "application_data": {
        "description": "Allow downlink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_accept": {
        "description": "Allow join-accept messages.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Allow downlink messages with FPort of 0.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "home_network_id": {
    "description": "Packet Broker identifier of the Home Network.",
    "title": "Packet Broker identifier of the Home Network.",
    "type": "object"
  },
  "uplink": {
    "properties": {
      "application_data": {
        "description": "Forward uplink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_request": {
        "description": "Forward join-request messages.",
        "type": "boolean"
      },
      "localization": {
        "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Forward uplink messages with FPort of 0.",
        "type": "boolean"
      },
      "signal_quality": {
        "description": "Forward RSSI and SNR.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/pba/home-networks/policies/{home_network_id.net_id}/{home_network_id.tenant_id}

Set the routing policy for the given Home Network.

Expand Collapse

Setting routing policies requires administrative access.

Request Parameters
Field Type Required Description
home_network_id.net_id integer true LoRa Alliance NetID.
home_network_id.tenant_id string true Tenant identifier if the registration leases DevAddr blocks from a NetID.
Request Body
Show JSON Schema
{
  "downlink": {
    "properties": {
      "application_data": {
        "description": "Allow downlink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_accept": {
        "description": "Allow join-accept messages.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Allow downlink messages with FPort of 0.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "home_network_id": {
    "description": "Packet Broker identifier of the Home Network.",
    "title": "Packet Broker identifier of the Home Network.",
    "type": "object"
  },
  "uplink": {
    "properties": {
      "application_data": {
        "description": "Forward uplink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_request": {
        "description": "Forward join-request messages.",
        "type": "boolean"
      },
      "localization": {
        "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Forward uplink messages with FPort of 0.",
        "type": "boolean"
      },
      "signal_quality": {
        "description": "Forward RSSI and SNR.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/pba/home-networks/policies/{net_id}

Delete the routing policy for the given Home Network.

Expand Collapse

Deleting routing policies requires administrative access.

Request Parameters
Field Type Required Description
net_id integer true LoRa Alliance NetID.
tenant_id string Tenant identifier if the registration leases DevAddr blocks from a NetID.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/pba/home-networks/policies/{net_id}

Get the routing policy for the given Home Network.

Expand Collapse

Getting routing policies requires administrative access.

Request Parameters
Field Type Required Description
net_id integer true LoRa Alliance NetID.
tenant_id string Tenant identifier if the registration leases DevAddr blocks from a NetID.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "downlink": {
    "properties": {
      "application_data": {
        "description": "Allow downlink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_accept": {
        "description": "Allow join-accept messages.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Allow downlink messages with FPort of 0.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "forwarder_id": {
    "properties": {
      "net_id": {
        "description": "LoRa Alliance NetID.",
        "format": "int64",
        "type": "integer"
      },
      "tenant_id": {
        "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "home_network_id": {
    "properties": {
      "net_id": {
        "description": "LoRa Alliance NetID.",
        "format": "int64",
        "type": "integer"
      },
      "tenant_id": {
        "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "Timestamp when the policy got last updated.",
    "format": "date-time",
    "type": "string"
  },
  "uplink": {
    "properties": {
      "application_data": {
        "description": "Forward uplink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_request": {
        "description": "Forward join-request messages.",
        "type": "boolean"
      },
      "localization": {
        "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Forward uplink messages with FPort of 0.",
        "type": "boolean"
      },
      "signal_quality": {
        "description": "Forward RSSI and SNR.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/pba/home-networks/policies/{net_id}/{tenant_id}

Delete the routing policy for the given Home Network.

Expand Collapse

Deleting routing policies requires administrative access.

Request Parameters
Field Type Required Description
net_id integer true LoRa Alliance NetID.
tenant_id string true Tenant identifier if the registration leases DevAddr blocks from a NetID.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/pba/home-networks/policies/{net_id}/{tenant_id}

Get the routing policy for the given Home Network.

Expand Collapse

Getting routing policies requires administrative access.

Request Parameters
Field Type Required Description
net_id integer true LoRa Alliance NetID.
tenant_id string true Tenant identifier if the registration leases DevAddr blocks from a NetID.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "downlink": {
    "properties": {
      "application_data": {
        "description": "Allow downlink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_accept": {
        "description": "Allow join-accept messages.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Allow downlink messages with FPort of 0.",
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "forwarder_id": {
    "properties": {
      "net_id": {
        "description": "LoRa Alliance NetID.",
        "format": "int64",
        "type": "integer"
      },
      "tenant_id": {
        "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "home_network_id": {
    "properties": {
      "net_id": {
        "description": "LoRa Alliance NetID.",
        "format": "int64",
        "type": "integer"
      },
      "tenant_id": {
        "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "updated_at": {
    "description": "Timestamp when the policy got last updated.",
    "format": "date-time",
    "type": "string"
  },
  "uplink": {
    "properties": {
      "application_data": {
        "description": "Forward uplink messages with FPort between 1 and 255.",
        "type": "boolean"
      },
      "join_request": {
        "description": "Forward join-request messages.",
        "type": "boolean"
      },
      "localization": {
        "description": "Forward gateway location, RSSI, SNR and fine timestamp.",
        "type": "boolean"
      },
      "mac_data": {
        "description": "Forward uplink messages with FPort of 0.",
        "type": "boolean"
      },
      "signal_quality": {
        "description": "Forward RSSI and SNR.",
        "type": "boolean"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/pba/info

Get information about the Packet Broker registration.

Expand Collapse

Viewing Packet Packet information requires administrative access.

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "forwarder_enabled": {
    "description": "Whether the server is configured as Forwarder (with gateways).",
    "type": "boolean"
  },
  "home_network_enabled": {
    "description": "Whether the server is configured as Home Network (with end devices).",
    "type": "boolean"
  },
  "register_enabled": {
    "description": "Whether the registration can be changed.",
    "type": "boolean"
  },
  "registration": {
    "properties": {
      "administrative_contact": {
        "properties": {
          "contact_method": {
            "default": "CONTACT_METHOD_OTHER",
            "enum": [
              "CONTACT_METHOD_OTHER",
              "CONTACT_METHOD_EMAIL",
              "CONTACT_METHOD_PHONE"
            ],
            "type": "string"
          },
          "contact_type": {
            "default": "CONTACT_TYPE_OTHER",
            "enum": [
              "CONTACT_TYPE_OTHER",
              "CONTACT_TYPE_ABUSE",
              "CONTACT_TYPE_BILLING",
              "CONTACT_TYPE_TECHNICAL"
            ],
            "type": "string"
          },
          "public": {
            "type": "boolean"
          },
          "validated_at": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "dev_addr_blocks": {
        "description": "DevAddr blocks that are assigned to this registration.",
        "items": {
          "properties": {
            "dev_addr_prefix": {
              "properties": {
                "dev_addr": {
                  "description": "DevAddr base.",
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "length": {
                  "description": "Number of most significant bits from dev_addr that are used as prefix.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "home_network_cluster_id": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "id": {
        "properties": {
          "net_id": {
            "description": "LoRa Alliance NetID.",
            "format": "int64",
            "type": "integer"
          },
          "tenant_id": {
            "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "listed": {
        "description": "Whether the network is listed so it can be viewed by other networks.",
        "type": "boolean"
      },
      "name": {
        "description": "Name of the network.",
        "type": "string"
      },
      "technical_contact": {
        "properties": {
          "contact_method": {
            "default": "CONTACT_METHOD_OTHER",
            "enum": [
              "CONTACT_METHOD_OTHER",
              "CONTACT_METHOD_EMAIL",
              "CONTACT_METHOD_PHONE"
            ],
            "type": "string"
          },
          "contact_type": {
            "default": "CONTACT_TYPE_OTHER",
            "enum": [
              "CONTACT_TYPE_OTHER",
              "CONTACT_TYPE_ABUSE",
              "CONTACT_TYPE_BILLING",
              "CONTACT_TYPE_TECHNICAL"
            ],
            "type": "string"
          },
          "public": {
            "type": "boolean"
          },
          "validated_at": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/pba/networks

List all listed networks.

Expand Collapse

Listing networks requires administrative access.

Request Parameters
Field Type Required Description
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
with_routing_policy boolean If true, list only the Forwarders and Home Networks with whom a routing policy has been defined in either direction.
tenant_id_contains string Filter by tenant ID.
name_contains string Filter by name.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "networks": {
    "items": {
      "properties": {
        "administrative_contact": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "dev_addr_blocks": {
          "description": "DevAddr blocks that are assigned to this registration.",
          "items": {
            "properties": {
              "dev_addr_prefix": {
                "properties": {
                  "dev_addr": {
                    "description": "DevAddr base.",
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "length": {
                    "description": "Number of most significant bits from dev_addr that are used as prefix.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "home_network_cluster_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "id": {
          "properties": {
            "net_id": {
              "description": "LoRa Alliance NetID.",
              "format": "int64",
              "type": "integer"
            },
            "tenant_id": {
              "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "listed": {
          "description": "Whether the network is listed so it can be viewed by other networks.",
          "type": "boolean"
        },
        "name": {
          "description": "Name of the network.",
          "type": "string"
        },
        "technical_contact": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/pba/registration

Deregister from Packet Broker.

Expand Collapse

Packet Broker deregistration requires administrative access. Packet Broker deregistration is only supported for tenants and requires Packet Broker Agent to be configured with NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled.

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/pba/registration

Register with Packet Broker.

Expand Collapse

If no registration exists, it will be created. Any existing registration will be updated. Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context. Packet Broker registration requires administrative access. Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "listed": {
    "description": "Whether the network should be listed in Packet Broker.\nIf unset, the value is taken from the registration settings.",
    "type": "boolean"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "properties": {
      "contact_method": {
        "default": "CONTACT_METHOD_OTHER",
        "enum": [
          "CONTACT_METHOD_OTHER",
          "CONTACT_METHOD_EMAIL",
          "CONTACT_METHOD_PHONE"
        ],
        "type": "string"
      },
      "contact_type": {
        "default": "CONTACT_TYPE_OTHER",
        "enum": [
          "CONTACT_TYPE_OTHER",
          "CONTACT_TYPE_ABUSE",
          "CONTACT_TYPE_BILLING",
          "CONTACT_TYPE_TECHNICAL"
        ],
        "type": "string"
      },
      "public": {
        "type": "boolean"
      },
      "validated_at": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "dev_addr_blocks": {
    "description": "DevAddr blocks that are assigned to this registration.",
    "items": {
      "properties": {
        "dev_addr_prefix": {
          "properties": {
            "dev_addr": {
              "description": "DevAddr base.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "length": {
              "description": "Number of most significant bits from dev_addr that are used as prefix.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "home_network_cluster_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "id": {
    "properties": {
      "net_id": {
        "description": "LoRa Alliance NetID.",
        "format": "int64",
        "type": "integer"
      },
      "tenant_id": {
        "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "listed": {
    "description": "Whether the network is listed so it can be viewed by other networks.",
    "type": "boolean"
  },
  "name": {
    "description": "Name of the network.",
    "type": "string"
  },
  "technical_contact": {
    "properties": {
      "contact_method": {
        "default": "CONTACT_METHOD_OTHER",
        "enum": [
          "CONTACT_METHOD_OTHER",
          "CONTACT_METHOD_EMAIL",
          "CONTACT_METHOD_PHONE"
        ],
        "type": "string"
      },
      "contact_type": {
        "default": "CONTACT_TYPE_OTHER",
        "enum": [
          "CONTACT_TYPE_OTHER",
          "CONTACT_TYPE_ABUSE",
          "CONTACT_TYPE_BILLING",
          "CONTACT_TYPE_TECHNICAL"
        ],
        "type": "string"
      },
      "public": {
        "type": "boolean"
      },
      "validated_at": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/pba/registration

Register with Packet Broker.

Expand Collapse

If no registration exists, it will be created. Any existing registration will be updated. Registration settings not in the request message are taken from Packet Broker Agent configuration and caller context. Packet Broker registration requires administrative access. Packet Broker registration is only supported for tenants and requires Packet Broker Agent to be configured with NetID level authentication. Use rpc GetInfo and check register_enabled to check whether this rpc is enabled.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "listed": {
    "description": "Whether the network should be listed in Packet Broker.\nIf unset, the value is taken from the registration settings.",
    "type": "boolean"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "administrative_contact": {
    "properties": {
      "contact_method": {
        "default": "CONTACT_METHOD_OTHER",
        "enum": [
          "CONTACT_METHOD_OTHER",
          "CONTACT_METHOD_EMAIL",
          "CONTACT_METHOD_PHONE"
        ],
        "type": "string"
      },
      "contact_type": {
        "default": "CONTACT_TYPE_OTHER",
        "enum": [
          "CONTACT_TYPE_OTHER",
          "CONTACT_TYPE_ABUSE",
          "CONTACT_TYPE_BILLING",
          "CONTACT_TYPE_TECHNICAL"
        ],
        "type": "string"
      },
      "public": {
        "type": "boolean"
      },
      "validated_at": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information.\nThis field is deprecated. Use administrative_contact and technical_contact instead.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "dev_addr_blocks": {
    "description": "DevAddr blocks that are assigned to this registration.",
    "items": {
      "properties": {
        "dev_addr_prefix": {
          "properties": {
            "dev_addr": {
              "description": "DevAddr base.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "length": {
              "description": "Number of most significant bits from dev_addr that are used as prefix.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "home_network_cluster_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "id": {
    "properties": {
      "net_id": {
        "description": "LoRa Alliance NetID.",
        "format": "int64",
        "type": "integer"
      },
      "tenant_id": {
        "description": "Tenant identifier if the registration leases DevAddr blocks from a NetID.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "listed": {
    "description": "Whether the network is listed so it can be viewed by other networks.",
    "type": "boolean"
  },
  "name": {
    "description": "Name of the network.",
    "type": "string"
  },
  "technical_contact": {
    "properties": {
      "contact_method": {
        "default": "CONTACT_METHOD_OTHER",
        "enum": [
          "CONTACT_METHOD_OTHER",
          "CONTACT_METHOD_EMAIL",
          "CONTACT_METHOD_PHONE"
        ],
        "type": "string"
      },
      "contact_type": {
        "default": "CONTACT_TYPE_OTHER",
        "enum": [
          "CONTACT_TYPE_OTHER",
          "CONTACT_TYPE_ABUSE",
          "CONTACT_TYPE_BILLING",
          "CONTACT_TYPE_TECHNICAL"
        ],
        "type": "string"
      },
      "public": {
        "type": "boolean"
      },
      "validated_at": {
        "format": "date-time",
        "type": "string"
      },
      "value": {
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EndDeviceQRCodeGenerator

Generate and parse end device QR codes.

Expand Collapse

post

/qr-codes/end-devices

Generates a QR code.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "end_device": {
    "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
    "properties": {
      "activated_at": {
        "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
        "format": "date-time",
        "type": "string"
      },
      "application_server_address": {
        "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "application_server_id": {
        "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
        "type": "string"
      },
      "application_server_kek_label": {
        "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
        "type": "object"
      },
      "battery_percentage": {
        "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
        "format": "float",
        "type": "number"
      },
      "claim_authentication_code": {
        "description": "Authentication code for end devices.",
        "properties": {
          "valid_from": {
            "format": "date-time",
            "type": "string"
          },
          "valid_to": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "Description of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "downlink_margin": {
        "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
        "format": "int32",
        "type": "integer"
      },
      "formatters": {
        "properties": {
          "down_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "down_formatter_parameter": {
            "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          },
          "up_formatter": {
            "default": "FORMATTER_NONE",
            "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
            "enum": [
              "FORMATTER_NONE",
              "FORMATTER_REPOSITORY",
              "FORMATTER_GRPC_SERVICE",
              "FORMATTER_JAVASCRIPT",
              "FORMATTER_CAYENNELPP"
            ],
            "type": "string"
          },
          "up_formatter_parameter": {
            "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "frequency_plan_id": {
        "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "string"
      },
      "ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "join_server_address": {
        "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "label_ids": {
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "last_dev_nonce": {
        "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_dev_status_received_at": {
        "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
        "format": "date-time",
        "type": "string"
      },
      "last_join_nonce": {
        "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_0": {
        "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_rj_count_1": {
        "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
        "format": "int64",
        "type": "integer"
      },
      "last_seen_at": {
        "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
        "format": "date-time",
        "type": "string"
      },
      "locations": {
        "additionalProperties": {
          "properties": {
            "accuracy": {
              "description": "The accuracy of the location (meters).",
              "format": "int32",
              "type": "integer"
            },
            "altitude": {
              "description": "The altitude (meters), where 0 is the mean sea level.",
              "format": "int32",
              "type": "integer"
            },
            "latitude": {
              "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
              "format": "double",
              "type": "number"
            },
            "longitude": {
              "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
              "format": "double",
              "type": "number"
            },
            "source": {
              "default": "SOURCE_UNKNOWN",
              "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
              "enum": [
                "SOURCE_UNKNOWN",
                "SOURCE_GPS",
                "SOURCE_REGISTRY",
                "SOURCE_IP_GEOLOCATION",
                "SOURCE_WIFI_RSSI_GEOLOCATION",
                "SOURCE_BT_RSSI_GEOLOCATION",
                "SOURCE_LORA_RSSI_GEOLOCATION",
                "SOURCE_LORA_TDOA_GEOLOCATION",
                "SOURCE_COMBINED_GEOLOCATION"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "description": "Location of the device. Stored in Entity Registry.",
        "type": "object"
      },
      "lora_alliance_profile_ids": {
        "properties": {
          "vendor_id": {
            "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
            "format": "int64",
            "type": "integer"
          },
          "vendor_profile_id": {
            "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "lorawan_phy_version": {
        "default": "PHY_UNKNOWN",
        "enum": [
          "PHY_UNKNOWN",
          "PHY_V1_0",
          "TS001_V1_0",
          "PHY_V1_0_1",
          "TS001_V1_0_1",
          "PHY_V1_0_2_REV_A",
          "RP001_V1_0_2",
          "PHY_V1_0_2_REV_B",
          "RP001_V1_0_2_REV_B",
          "PHY_V1_1_REV_A",
          "RP001_V1_1_REV_A",
          "PHY_V1_1_REV_B",
          "RP001_V1_1_REV_B",
          "PHY_V1_0_3_REV_A",
          "RP001_V1_0_3_REV_A",
          "RP002_V1_0_0",
          "RP002_V1_0_1",
          "RP002_V1_0_2",
          "RP002_V1_0_3",
          "RP002_V1_0_4"
        ],
        "type": "string"
      },
      "lorawan_version": {
        "default": "MAC_UNKNOWN",
        "enum": [
          "MAC_UNKNOWN",
          "MAC_V1_0",
          "MAC_V1_0_1",
          "MAC_V1_0_2",
          "MAC_V1_1",
          "MAC_V1_0_3",
          "MAC_V1_0_4"
        ],
        "type": "string"
      },
      "mac_settings": {
        "properties": {
          "adr": {
            "description": "Adaptive Data Rate settings.",
            "properties": {
              "disabled": {
                "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                "type": "object"
              },
              "dynamic": {
                "description": "Configuration options for dynamic ADR.",
                "properties": {
                  "channel_steering": {
                    "description": "EXPERIMENTAL: Channel steering settings.",
                    "properties": {
                      "disabled": {
                        "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                        "type": "object"
                      },
                      "lora_narrow": {
                        "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "margin": {
                    "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "float",
                    "type": "number"
                  },
                  "max_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "max_nb_trans": {
                    "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_tx_power_index": {
                    "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_data_rate_index": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "min_nb_trans": {
                    "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "min_tx_power_index": {
                    "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "overrides": {
                    "description": "EXPERIMENTAL: Configuration overrides.",
                    "properties": {
                      "data_rate_0": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_1": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_10": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_11": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_12": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_13": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_14": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_15": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_2": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_3": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_4": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_5": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_6": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_7": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_8": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "data_rate_9": {
                        "description": "EXPERIMENTAL: Data rate index override settings.",
                        "properties": {
                          "max_nb_trans": {
                            "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "min_nb_trans": {
                            "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "static": {
                "description": "Configuration options for static ADR.",
                "properties": {
                  "data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "nb_trans": {
                    "description": "Number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "tx_power_index": {
                    "description": "Transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "adr_margin": {
            "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
            "format": "float",
            "type": "number"
          },
          "beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "class_b_c_downlink_interval": {
            "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
            "type": "string"
          },
          "class_b_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "class_c_timeout": {
            "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "desired_adr_ack_delay_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_DELAY_1",
                "enum": [
                  "ADR_ACK_DELAY_1",
                  "ADR_ACK_DELAY_2",
                  "ADR_ACK_DELAY_4",
                  "ADR_ACK_DELAY_8",
                  "ADR_ACK_DELAY_16",
                  "ADR_ACK_DELAY_32",
                  "ADR_ACK_DELAY_64",
                  "ADR_ACK_DELAY_128",
                  "ADR_ACK_DELAY_256",
                  "ADR_ACK_DELAY_512",
                  "ADR_ACK_DELAY_1024",
                  "ADR_ACK_DELAY_2048",
                  "ADR_ACK_DELAY_4096",
                  "ADR_ACK_DELAY_8192",
                  "ADR_ACK_DELAY_16384",
                  "ADR_ACK_DELAY_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_adr_ack_limit_exponent": {
            "properties": {
              "value": {
                "default": "ADR_ACK_LIMIT_1",
                "enum": [
                  "ADR_ACK_LIMIT_1",
                  "ADR_ACK_LIMIT_2",
                  "ADR_ACK_LIMIT_4",
                  "ADR_ACK_LIMIT_8",
                  "ADR_ACK_LIMIT_16",
                  "ADR_ACK_LIMIT_32",
                  "ADR_ACK_LIMIT_64",
                  "ADR_ACK_LIMIT_128",
                  "ADR_ACK_LIMIT_256",
                  "ADR_ACK_LIMIT_512",
                  "ADR_ACK_LIMIT_1024",
                  "ADR_ACK_LIMIT_2048",
                  "ADR_ACK_LIMIT_4096",
                  "ADR_ACK_LIMIT_8192",
                  "ADR_ACK_LIMIT_16384",
                  "ADR_ACK_LIMIT_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_beacon_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_max_eirp": {
            "properties": {
              "value": {
                "default": "DEVICE_EIRP_8",
                "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                "enum": [
                  "DEVICE_EIRP_8",
                  "DEVICE_EIRP_10",
                  "DEVICE_EIRP_12",
                  "DEVICE_EIRP_13",
                  "DEVICE_EIRP_14",
                  "DEVICE_EIRP_16",
                  "DEVICE_EIRP_18",
                  "DEVICE_EIRP_20",
                  "DEVICE_EIRP_21",
                  "DEVICE_EIRP_24",
                  "DEVICE_EIRP_26",
                  "DEVICE_EIRP_27",
                  "DEVICE_EIRP_29",
                  "DEVICE_EIRP_30",
                  "DEVICE_EIRP_33",
                  "DEVICE_EIRP_36"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "desired_rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "downlink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "factory_preset_frequencies": {
            "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "max_duty_cycle": {
            "properties": {
              "value": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "relay": {
            "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
            "properties": {
              "served": {
                "properties": {
                  "always": {
                    "type": "object"
                  },
                  "backoff": {
                    "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "dynamic": {
                    "properties": {
                      "smart_enable_level": {
                        "default": "RELAY_SMART_ENABLE_LEVEL_8",
                        "enum": [
                          "RELAY_SMART_ENABLE_LEVEL_8",
                          "RELAY_SMART_ENABLE_LEVEL_16",
                          "RELAY_SMART_ENABLE_LEVEL_32",
                          "RELAY_SMART_ENABLE_LEVEL_64"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "end_device_controlled": {
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving_device_id": {
                    "description": "End device identifier of the serving end device.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "serving": {
                "properties": {
                  "cad_periodicity": {
                    "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                    "enum": [
                      "RELAY_CAD_PERIODICITY_1_SECOND",
                      "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                      "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                    ],
                    "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                    "type": "string"
                  },
                  "default_channel_index": {
                    "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "limits": {
                    "properties": {
                      "join_requests": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notifications": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_behavior": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      },
                      "uplink_messages": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "second_channel": {
                    "properties": {
                      "ack_offset": {
                        "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                        "enum": [
                          "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "RELAY_SECOND_CH_ACK_OFFSET_200",
                          "RELAY_SECOND_CH_ACK_OFFSET_400",
                          "RELAY_SECOND_CH_ACK_OFFSET_800",
                          "RELAY_SECOND_CH_ACK_OFFSET_1600",
                          "RELAY_SECOND_CH_ACK_OFFSET_3200"
                        ],
                        "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                        "type": "string"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "The frequency (Hz) used by the wake on radio message.",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "uplink_forwarding_rules": {
                    "description": "Configured uplink forwarding rules.",
                    "items": {
                      "properties": {
                        "device_id": {
                          "description": "End device identifier of the served end device.",
                          "type": "string"
                        },
                        "last_w_f_cnt": {
                          "description": "Last wake on radio frame counter used by the served end device.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "session_key_id": {
                          "description": "Session key ID of the session keys used to derive the root relay session key.",
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "resets_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "rx1_data_rate_offset": {
            "properties": {
              "value": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx1_delay": {
            "properties": {
              "value": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_data_rate_index": {
            "properties": {
              "value": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "rx2_frequency": {
            "properties": {
              "value": {
                "format": "uint64",
                "type": "string"
              }
            },
            "type": "object"
          },
          "schedule_downlinks": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "status_count_periodicity": {
            "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "format": "int64",
            "type": "integer"
          },
          "status_time_periodicity": {
            "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
            "type": "string"
          },
          "supports_32_bit_f_cnt": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "uplink_dwell_time": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "use_adr": {
            "properties": {
              "value": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "mac_settings_profile_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "profile_id": {
            "description": "Profile ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "max_frequency": {
        "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "min_frequency": {
        "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "format": "uint64",
        "type": "string"
      },
      "multicast": {
        "description": "Indicates whether this device represents a multicast group.",
        "type": "boolean"
      },
      "name": {
        "description": "Friendly name of the device. Stored in Entity Registry.",
        "type": "string"
      },
      "net_id": {
        "description": "Home NetID. Stored in Join Server.",
        "example": "000013",
        "format": "string",
        "type": "string"
      },
      "network_server_address": {
        "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
        "type": "string"
      },
      "network_server_kek_label": {
        "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
        "type": "string"
      },
      "pending_mac_state": {
        "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
        "properties": {
          "current_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "desired_parameters": {
            "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
            "properties": {
              "adr_ack_delay": {
                "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_ack_limit": {
                "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                "format": "int64",
                "type": "integer"
              },
              "adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "adr_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "adr_nb_trans": {
                "description": "ADR: number of retransmissions.",
                "format": "int64",
                "type": "integer"
              },
              "adr_tx_power_index": {
                "description": "ADR: transmission power index to use.",
                "format": "int64",
                "type": "integer"
              },
              "beacon_frequency": {
                "description": "Frequency of the class B beacon (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "channels": {
                "description": "Configured uplink channels and optionally Rx1 frequency.",
                "items": {
                  "properties": {
                    "downlink_frequency": {
                      "description": "Downlink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "enable_uplink": {
                      "description": "Channel can be used by device for uplink.",
                      "type": "boolean"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "uplink_frequency": {
                      "description": "Uplink frequency of the channel (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "max_duty_cycle": {
                "default": "DUTY_CYCLE_1",
                "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                "enum": [
                  "DUTY_CYCLE_1",
                  "DUTY_CYCLE_2",
                  "DUTY_CYCLE_4",
                  "DUTY_CYCLE_8",
                  "DUTY_CYCLE_16",
                  "DUTY_CYCLE_32",
                  "DUTY_CYCLE_64",
                  "DUTY_CYCLE_128",
                  "DUTY_CYCLE_256",
                  "DUTY_CYCLE_512",
                  "DUTY_CYCLE_1024",
                  "DUTY_CYCLE_2048",
                  "DUTY_CYCLE_4096",
                  "DUTY_CYCLE_8192",
                  "DUTY_CYCLE_16384",
                  "DUTY_CYCLE_32768"
                ],
                "type": "string"
              },
              "max_eirp": {
                "description": "Maximum EIRP (dBm).",
                "format": "float",
                "type": "number"
              },
              "ping_slot_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "ping_slot_data_rate_index_value": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "description": "Frequency of the class B ping slot (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "rejoin_count_periodicity": {
                "default": "REJOIN_COUNT_16",
                "enum": [
                  "REJOIN_COUNT_16",
                  "REJOIN_COUNT_32",
                  "REJOIN_COUNT_64",
                  "REJOIN_COUNT_128",
                  "REJOIN_COUNT_256",
                  "REJOIN_COUNT_512",
                  "REJOIN_COUNT_1024",
                  "REJOIN_COUNT_2048",
                  "REJOIN_COUNT_4096",
                  "REJOIN_COUNT_8192",
                  "REJOIN_COUNT_16384",
                  "REJOIN_COUNT_32768",
                  "REJOIN_COUNT_65536",
                  "REJOIN_COUNT_131072",
                  "REJOIN_COUNT_262144",
                  "REJOIN_COUNT_524288"
                ],
                "type": "string"
              },
              "rejoin_time_periodicity": {
                "default": "REJOIN_TIME_0",
                "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                "enum": [
                  "REJOIN_TIME_0",
                  "REJOIN_TIME_1",
                  "REJOIN_TIME_2",
                  "REJOIN_TIME_3",
                  "REJOIN_TIME_4",
                  "REJOIN_TIME_5",
                  "REJOIN_TIME_6",
                  "REJOIN_TIME_7",
                  "REJOIN_TIME_8",
                  "REJOIN_TIME_9",
                  "REJOIN_TIME_10",
                  "REJOIN_TIME_11",
                  "REJOIN_TIME_12",
                  "REJOIN_TIME_13",
                  "REJOIN_TIME_14",
                  "REJOIN_TIME_15"
                ],
                "type": "string"
              },
              "relay": {
                "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "default": "DATA_RATE_OFFSET_0",
                "enum": [
                  "DATA_RATE_OFFSET_0",
                  "DATA_RATE_OFFSET_1",
                  "DATA_RATE_OFFSET_2",
                  "DATA_RATE_OFFSET_3",
                  "DATA_RATE_OFFSET_4",
                  "DATA_RATE_OFFSET_5",
                  "DATA_RATE_OFFSET_6",
                  "DATA_RATE_OFFSET_7"
                ],
                "type": "string"
              },
              "rx1_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              },
              "rx2_data_rate_index": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "rx2_frequency": {
                "description": "Frequency for Rx2 (Hz).",
                "format": "uint64",
                "type": "string"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "device_class": {
            "default": "CLASS_A",
            "enum": [
              "CLASS_A",
              "CLASS_B",
              "CLASS_C"
            ],
            "type": "string"
          },
          "last_adr_change_f_cnt_up": {
            "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
            "format": "int64",
            "type": "integer"
          },
          "last_confirmed_downlink_at": {
            "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_dev_status_f_cnt_up": {
            "description": "Frame counter value of last uplink containing DevStatusAns.",
            "format": "int64",
            "type": "integer"
          },
          "last_downlink_at": {
            "description": "Time when the last downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "last_network_initiated_downlink_at": {
            "description": "Time when the last network-initiated downlink message was scheduled.",
            "format": "date-time",
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "pending_application_downlink": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "pending_join_request": {
            "properties": {
              "cf_list": {
                "properties": {
                  "ch_masks": {
                    "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                    "items": {
                      "type": "boolean"
                    },
                    "type": "array"
                  },
                  "freq": {
                    "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                    "items": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "type": "array"
                  },
                  "type": {
                    "default": "FREQUENCIES",
                    "enum": [
                      "FREQUENCIES",
                      "CHANNEL_MASKS"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_settings": {
                "properties": {
                  "opt_neg": {
                    "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                    "type": "boolean"
                  },
                  "rx1_dr_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx2_dr": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx_delay": {
                "default": "RX_DELAY_0",
                "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                "enum": [
                  "RX_DELAY_0",
                  "RX_DELAY_1",
                  "RX_DELAY_2",
                  "RX_DELAY_3",
                  "RX_DELAY_4",
                  "RX_DELAY_5",
                  "RX_DELAY_6",
                  "RX_DELAY_7",
                  "RX_DELAY_8",
                  "RX_DELAY_9",
                  "RX_DELAY_10",
                  "RX_DELAY_11",
                  "RX_DELAY_12",
                  "RX_DELAY_13",
                  "RX_DELAY_14",
                  "RX_DELAY_15"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_relay_downlink": {
            "properties": {
              "raw_payload": {
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "pending_requests": {
            "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "ping_slot_periodicity": {
            "properties": {
              "value": {
                "default": "PING_EVERY_1S",
                "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                "enum": [
                  "PING_EVERY_1S",
                  "PING_EVERY_2S",
                  "PING_EVERY_4S",
                  "PING_EVERY_8S",
                  "PING_EVERY_16S",
                  "PING_EVERY_32S",
                  "PING_EVERY_64S",
                  "PING_EVERY_128S"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "queued_join_accept": {
            "properties": {
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dev_addr": {
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "net_id": {
                "example": "000013",
                "format": "string",
                "type": "string"
              },
              "payload": {
                "description": "Payload of the join-accept received from Join Server.",
                "format": "byte",
                "type": "string"
              },
              "request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "queued_responses": {
            "description": "Queued MAC responses.\nRegenerated on each uplink.",
            "items": {
              "properties": {
                "adr_param_setup_req": {
                  "properties": {
                    "adr_ack_delay_exponent": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    },
                    "adr_ack_limit_exponent": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_ans": {
                  "properties": {
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "beacon_freq_req": {
                  "properties": {
                    "frequency": {
                      "description": "Frequency of the Class B beacons (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "beacon_timing_ans": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "delay": {
                      "description": "(uint16) See LoRaWAN specification.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "cid": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "dev_status_ans": {
                  "properties": {
                    "battery": {
                      "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "SNR of the last downlink (dB; [-32, +31]).",
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "device_mode_conf": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_mode_ind": {
                  "properties": {
                    "class": {
                      "default": "CLASS_A",
                      "enum": [
                        "CLASS_A",
                        "CLASS_B",
                        "CLASS_C"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "device_time_ans": {
                  "properties": {
                    "time": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_ans": {
                  "properties": {
                    "channel_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "dl_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Downlink channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "duty_cycle_req": {
                  "properties": {
                    "max_duty_cycle": {
                      "default": "DUTY_CYCLE_1",
                      "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                      "enum": [
                        "DUTY_CYCLE_1",
                        "DUTY_CYCLE_2",
                        "DUTY_CYCLE_4",
                        "DUTY_CYCLE_8",
                        "DUTY_CYCLE_16",
                        "DUTY_CYCLE_32",
                        "DUTY_CYCLE_64",
                        "DUTY_CYCLE_128",
                        "DUTY_CYCLE_256",
                        "DUTY_CYCLE_512",
                        "DUTY_CYCLE_1024",
                        "DUTY_CYCLE_2048",
                        "DUTY_CYCLE_4096",
                        "DUTY_CYCLE_8192",
                        "DUTY_CYCLE_16384",
                        "DUTY_CYCLE_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "force_rejoin_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "max_retries": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "period_exponent": {
                      "default": "REJOIN_PERIOD_0",
                      "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                      "enum": [
                        "REJOIN_PERIOD_0",
                        "REJOIN_PERIOD_1",
                        "REJOIN_PERIOD_2",
                        "REJOIN_PERIOD_3",
                        "REJOIN_PERIOD_4",
                        "REJOIN_PERIOD_5",
                        "REJOIN_PERIOD_6",
                        "REJOIN_PERIOD_7"
                      ],
                      "type": "string"
                    },
                    "rejoin_type": {
                      "default": "CONTEXT",
                      "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                      "enum": [
                        "CONTEXT",
                        "SESSION",
                        "KEYS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "link_adr_ans": {
                  "properties": {
                    "channel_mask_ack": {
                      "type": "boolean"
                    },
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "tx_power_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "link_adr_req": {
                  "properties": {
                    "channel_mask": {
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "channel_mask_control": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "link_check_ans": {
                  "properties": {
                    "gateway_count": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "margin": {
                      "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "new_channel_ans": {
                  "properties": {
                    "data_rate_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "new_channel_req": {
                  "properties": {
                    "channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frequency": {
                      "description": "Channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    },
                    "max_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "min_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_ans": {
                  "properties": {
                    "data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_channel_req": {
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "frequency": {
                      "description": "Ping slot channel frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_info_req": {
                  "properties": {
                    "period": {
                      "default": "PING_EVERY_1S",
                      "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                      "enum": [
                        "PING_EVERY_1S",
                        "PING_EVERY_2S",
                        "PING_EVERY_4S",
                        "PING_EVERY_8S",
                        "PING_EVERY_16S",
                        "PING_EVERY_32S",
                        "PING_EVERY_64S",
                        "PING_EVERY_128S"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                },
                "rejoin_param_setup_ans": {
                  "properties": {
                    "max_time_exponent_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rejoin_param_setup_req": {
                  "properties": {
                    "max_count_exponent": {
                      "default": "REJOIN_COUNT_16",
                      "enum": [
                        "REJOIN_COUNT_16",
                        "REJOIN_COUNT_32",
                        "REJOIN_COUNT_64",
                        "REJOIN_COUNT_128",
                        "REJOIN_COUNT_256",
                        "REJOIN_COUNT_512",
                        "REJOIN_COUNT_1024",
                        "REJOIN_COUNT_2048",
                        "REJOIN_COUNT_4096",
                        "REJOIN_COUNT_8192",
                        "REJOIN_COUNT_16384",
                        "REJOIN_COUNT_32768",
                        "REJOIN_COUNT_65536",
                        "REJOIN_COUNT_131072",
                        "REJOIN_COUNT_262144",
                        "REJOIN_COUNT_524288"
                      ],
                      "type": "string"
                    },
                    "max_time_exponent": {
                      "default": "REJOIN_TIME_0",
                      "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                      "enum": [
                        "REJOIN_TIME_0",
                        "REJOIN_TIME_1",
                        "REJOIN_TIME_2",
                        "REJOIN_TIME_3",
                        "REJOIN_TIME_4",
                        "REJOIN_TIME_5",
                        "REJOIN_TIME_6",
                        "REJOIN_TIME_7",
                        "REJOIN_TIME_8",
                        "REJOIN_TIME_9",
                        "REJOIN_TIME_10",
                        "REJOIN_TIME_11",
                        "REJOIN_TIME_12",
                        "REJOIN_TIME_13",
                        "REJOIN_TIME_14",
                        "REJOIN_TIME_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rekey_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_ans": {
                  "properties": {
                    "cad_periodicity_ack": {
                      "type": "boolean"
                    },
                    "default_channel_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_ack_offset_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_configure_fwd_limit_ans": {
                  "type": "object"
                },
                "relay_configure_fwd_limit_req": {
                  "properties": {
                    "global_uplink_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "notify_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "overall_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_limit_counter": {
                      "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                      "enum": [
                        "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                        "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                        "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_ans": {
                  "properties": {
                    "rule_index_ack": {
                      "type": "boolean"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_ctrl_uplink_list_req": {
                  "properties": {
                    "action": {
                      "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                      "enum": [
                        "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                      ],
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_ans": {
                  "properties": {
                    "backoff_ack": {
                      "type": "boolean"
                    },
                    "second_channel_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "second_channel_frequency_ack": {
                      "type": "boolean"
                    },
                    "second_channel_index_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "relay_end_device_conf_req": {
                  "properties": {
                    "configuration": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "relay_notify_new_end_device_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "rssi": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "snr": {
                      "format": "int32",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "relay_update_uplink_list_ans": {
                  "type": "object"
                },
                "relay_update_uplink_list_req": {
                  "properties": {
                    "dev_addr": {
                      "example": "2600ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "device_id": {
                      "type": "string"
                    },
                    "forward_limits": {
                      "properties": {
                        "bucket_size": {
                          "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                          "enum": [
                            "RELAY_LIMIT_BUCKET_SIZE_1",
                            "RELAY_LIMIT_BUCKET_SIZE_2",
                            "RELAY_LIMIT_BUCKET_SIZE_4",
                            "RELAY_LIMIT_BUCKET_SIZE_12"
                          ],
                          "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                          "type": "string"
                        },
                        "reload_rate": {
                          "description": "The number of tokens which are replenished in the bucket every hour.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "root_wor_s_key": {
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    },
                    "rule_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "session_key_id": {
                      "format": "byte",
                      "type": "string"
                    },
                    "w_f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reset_conf": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "reset_ind": {
                  "properties": {
                    "minor_version": {
                      "default": "MINOR_RFU_0",
                      "enum": [
                        "MINOR_RFU_0",
                        "MINOR_1",
                        "MINOR_RFU_2",
                        "MINOR_RFU_3",
                        "MINOR_RFU_4",
                        "MINOR_RFU_5",
                        "MINOR_RFU_6",
                        "MINOR_RFU_7",
                        "MINOR_RFU_8",
                        "MINOR_RFU_9",
                        "MINOR_RFU_10",
                        "MINOR_RFU_11",
                        "MINOR_RFU_12",
                        "MINOR_RFU_13",
                        "MINOR_RFU_14",
                        "MINOR_RFU_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_ans": {
                  "properties": {
                    "rx1_data_rate_offset_ack": {
                      "type": "boolean"
                    },
                    "rx2_data_rate_index_ack": {
                      "type": "boolean"
                    },
                    "rx2_frequency_ack": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "rx_param_setup_req": {
                  "properties": {
                    "rx1_data_rate_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "rx2_frequency": {
                      "description": "Rx2 frequency (Hz).",
                      "format": "uint64",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_timing_setup_req": {
                  "properties": {
                    "delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "tx_param_setup_req": {
                  "properties": {
                    "downlink_dwell_time": {
                      "type": "boolean"
                    },
                    "max_eirp_index": {
                      "default": "DEVICE_EIRP_8",
                      "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                      "enum": [
                        "DEVICE_EIRP_8",
                        "DEVICE_EIRP_10",
                        "DEVICE_EIRP_12",
                        "DEVICE_EIRP_13",
                        "DEVICE_EIRP_14",
                        "DEVICE_EIRP_16",
                        "DEVICE_EIRP_18",
                        "DEVICE_EIRP_20",
                        "DEVICE_EIRP_21",
                        "DEVICE_EIRP_24",
                        "DEVICE_EIRP_26",
                        "DEVICE_EIRP_27",
                        "DEVICE_EIRP_29",
                        "DEVICE_EIRP_30",
                        "DEVICE_EIRP_33",
                        "DEVICE_EIRP_36"
                      ],
                      "type": "string"
                    },
                    "uplink_dwell_time": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_downlinks": {
            "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "payload": {
                  "properties": {
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "full_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "recent_mac_command_identifiers": {
            "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
            "items": {
              "default": "CID_RFU_0",
              "enum": [
                "CID_RFU_0",
                "CID_RESET",
                "CID_LINK_CHECK",
                "CID_LINK_ADR",
                "CID_DUTY_CYCLE",
                "CID_RX_PARAM_SETUP",
                "CID_DEV_STATUS",
                "CID_NEW_CHANNEL",
                "CID_RX_TIMING_SETUP",
                "CID_TX_PARAM_SETUP",
                "CID_DL_CHANNEL",
                "CID_REKEY",
                "CID_ADR_PARAM_SETUP",
                "CID_DEVICE_TIME",
                "CID_FORCE_REJOIN",
                "CID_REJOIN_PARAM_SETUP",
                "CID_PING_SLOT_INFO",
                "CID_PING_SLOT_CHANNEL",
                "CID_BEACON_TIMING",
                "CID_BEACON_FREQ",
                "CID_DEVICE_MODE",
                "CID_RELAY_CONF",
                "CID_RELAY_END_DEVICE_CONF",
                "CID_RELAY_FILTER_LIST",
                "CID_RELAY_UPDATE_UPLINK_LIST",
                "CID_RELAY_CTRL_UPLINK_LIST",
                "CID_RELAY_CONFIGURE_FWD_LIMIT",
                "CID_RELAY_NOTIFY_NEW_END_DEVICE"
              ],
              "title": "- CID_BEACON_TIMING: Deprecated",
              "type": "string"
            },
            "type": "array"
          },
          "recent_uplinks": {
            "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
            "items": {
              "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "device_channel_index": {
                  "format": "int64",
                  "type": "integer"
                },
                "payload": {
                  "properties": {
                    "join_accept_payload": {
                      "properties": {
                        "cf_list": {
                          "properties": {
                            "ch_masks": {
                              "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                              "items": {
                                "type": "boolean"
                              },
                              "type": "array"
                            },
                            "freq": {
                              "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                              "items": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "type": "array"
                            },
                            "type": {
                              "default": "FREQUENCIES",
                              "enum": [
                                "FREQUENCIES",
                                "CHANNEL_MASKS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dl_settings": {
                          "properties": {
                            "opt_neg": {
                              "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                              "type": "boolean"
                            },
                            "rx1_dr_offset": {
                              "default": "DATA_RATE_OFFSET_0",
                              "enum": [
                                "DATA_RATE_OFFSET_0",
                                "DATA_RATE_OFFSET_1",
                                "DATA_RATE_OFFSET_2",
                                "DATA_RATE_OFFSET_3",
                                "DATA_RATE_OFFSET_4",
                                "DATA_RATE_OFFSET_5",
                                "DATA_RATE_OFFSET_6",
                                "DATA_RATE_OFFSET_7"
                              ],
                              "type": "string"
                            },
                            "rx2_dr": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "encrypted": {
                          "format": "byte",
                          "type": "string"
                        },
                        "join_nonce": {
                          "example": "ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rx_delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "join_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "dev_nonce": {
                          "example": "ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "m_hdr": {
                      "properties": {
                        "m_type": {
                          "default": "JOIN_REQUEST",
                          "enum": [
                            "JOIN_REQUEST",
                            "JOIN_ACCEPT",
                            "UNCONFIRMED_UP",
                            "UNCONFIRMED_DOWN",
                            "CONFIRMED_UP",
                            "CONFIRMED_DOWN",
                            "REJOIN_REQUEST",
                            "PROPRIETARY"
                          ],
                          "type": "string"
                        },
                        "major": {
                          "default": "LORAWAN_R1",
                          "enum": [
                            "LORAWAN_R1"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "mac_payload": {
                      "properties": {
                        "decoded_payload": {
                          "type": "object"
                        },
                        "f_hdr": {
                          "properties": {
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "f_ctrl": {
                              "properties": {
                                "ack": {
                                  "type": "boolean"
                                },
                                "adr": {
                                  "type": "boolean"
                                },
                                "adr_ack_req": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "class_b": {
                                  "description": "Only on uplink.",
                                  "type": "boolean"
                                },
                                "f_pending": {
                                  "description": "Only on downlink.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object"
                            },
                            "f_opts": {
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "f_port": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frm_payload": {
                          "format": "byte",
                          "type": "string"
                        },
                        "full_f_cnt": {
                          "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "mic": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_request_payload": {
                      "properties": {
                        "dev_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "join_eui": {
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "net_id": {
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "rejoin_cnt": {
                          "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "title": "Message represents a LoRaWAN message",
                  "type": "object"
                },
                "received_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "rx_metadata": {
                  "items": {
                    "properties": {
                      "channel_rssi": {
                        "format": "float",
                        "type": "number"
                      },
                      "downlink_path_constraint": {
                        "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                        "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                        "enum": [
                          "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                          "DOWNLINK_PATH_CONSTRAINT_NEVER"
                        ],
                        "type": "string"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "packet_broker": {
                        "type": "object"
                      },
                      "relay": {
                        "type": "object"
                      },
                      "snr": {
                        "format": "float",
                        "type": "number"
                      },
                      "uplink_token": {
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "settings": {
                  "properties": {
                    "data_rate": {
                      "properties": {
                        "fsk": {
                          "properties": {
                            "bit_rate": {
                              "description": "Bit rate (bps).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lora": {
                          "properties": {
                            "bandwidth": {
                              "description": "Bandwidth (Hz).",
                              "format": "int64",
                              "type": "integer"
                            },
                            "coding_rate": {
                              "type": "string"
                            },
                            "spreading_factor": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "lrfhss": {
                          "properties": {
                            "coding_rate": {
                              "type": "string"
                            },
                            "modulation_type": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "operating_channel_width": {
                              "description": "Operating Channel Width (Hz).",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "rejected_adr_data_rate_indexes": {
            "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
            "items": {
              "default": "DATA_RATE_0",
              "enum": [
                "DATA_RATE_0",
                "DATA_RATE_1",
                "DATA_RATE_2",
                "DATA_RATE_3",
                "DATA_RATE_4",
                "DATA_RATE_5",
                "DATA_RATE_6",
                "DATA_RATE_7",
                "DATA_RATE_8",
                "DATA_RATE_9",
                "DATA_RATE_10",
                "DATA_RATE_11",
                "DATA_RATE_12",
                "DATA_RATE_13",
                "DATA_RATE_14",
                "DATA_RATE_15"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "rejected_adr_tx_power_indexes": {
            "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "rejected_data_rate_ranges": {
            "additionalProperties": {
              "properties": {
                "ranges": {
                  "items": {
                    "properties": {
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "description": "Data rate ranges rejected by the device per frequency.",
            "type": "object"
          },
          "rejected_frequencies": {
            "description": "Frequencies rejected by the device.",
            "items": {
              "format": "uint64",
              "type": "string"
            },
            "type": "array"
          },
          "rx_windows_available": {
            "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "pending_session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "power_state": {
        "default": "POWER_UNKNOWN",
        "description": "Power state of the device.",
        "enum": [
          "POWER_UNKNOWN",
          "POWER_BATTERY",
          "POWER_EXTERNAL"
        ],
        "type": "string"
      },
      "provisioner_id": {
        "description": "ID of the provisioner. Stored in Join Server.",
        "type": "string"
      },
      "provisioning_data": {
        "description": "Vendor-specific provisioning data. Stored in Join Server.",
        "type": "object"
      },
      "queued_application_downlinks": {
        "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
        "items": {
          "properties": {
            "attributes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Attributes for devices, set by the Application Server while handling the message.",
              "type": "object"
            },
            "class_b_c": {
              "properties": {
                "absolute_time": {
                  "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                  "format": "date-time",
                  "type": "string"
                },
                "gateways": {
                  "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                  "items": {
                    "properties": {
                      "antenna_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "gateway_ids": {
                        "properties": {
                          "eui": {
                            "description": "Secondary identifier, which can only be used in specific requests.",
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "gateway_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "group_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            },
            "confirmed": {
              "type": "boolean"
            },
            "confirmed_retry": {
              "properties": {
                "attempt": {
                  "description": "The number of attempted confirmed downlink acknowledgements.",
                  "format": "int64",
                  "type": "integer"
                },
                "max_attempts": {
                  "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "correlation_ids": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "decoded_payload": {
              "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
              "type": "object"
            },
            "decoded_payload_warnings": {
              "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "f_cnt": {
              "format": "int64",
              "type": "integer"
            },
            "f_port": {
              "format": "int64",
              "type": "integer"
            },
            "frm_payload": {
              "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
              "format": "byte",
              "type": "string"
            },
            "locations": {
              "additionalProperties": {
                "properties": {
                  "accuracy": {
                    "description": "The accuracy of the location (meters).",
                    "format": "int32",
                    "type": "integer"
                  },
                  "altitude": {
                    "description": "The altitude (meters), where 0 is the mean sea level.",
                    "format": "int32",
                    "type": "integer"
                  },
                  "latitude": {
                    "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "longitude": {
                    "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                    "format": "double",
                    "type": "number"
                  },
                  "source": {
                    "default": "SOURCE_UNKNOWN",
                    "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                    "enum": [
                      "SOURCE_UNKNOWN",
                      "SOURCE_GPS",
                      "SOURCE_REGISTRY",
                      "SOURCE_IP_GEOLOCATION",
                      "SOURCE_WIFI_RSSI_GEOLOCATION",
                      "SOURCE_BT_RSSI_GEOLOCATION",
                      "SOURCE_LORA_RSSI_GEOLOCATION",
                      "SOURCE_LORA_TDOA_GEOLOCATION",
                      "SOURCE_COMBINED_GEOLOCATION"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "description": "End device location metadata, set by the Application Server while handling the message.",
              "type": "object"
            },
            "network_ids": {
              "description": "Identifies a Network Server.",
              "properties": {
                "cluster_address": {
                  "description": "Cluster address of the Network Server.",
                  "type": "string"
                },
                "cluster_id": {
                  "description": "Cluster identifier of the Network Server.",
                  "type": "string"
                },
                "net_id": {
                  "description": "LoRa Alliance NetID.",
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "ns_id": {
                  "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "tenant_address": {
                  "description": "Optional tenant address for multi-tenant deployments.",
                  "type": "string"
                },
                "tenant_id": {
                  "description": "Optional tenant identifier for multi-tenant deployments.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "priority": {
              "default": "LOWEST",
              "enum": [
                "LOWEST",
                "LOW",
                "BELOW_NORMAL",
                "NORMAL",
                "ABOVE_NORMAL",
                "HIGH",
                "HIGHEST"
              ],
              "type": "string"
            },
            "session_key_id": {
              "description": "Join Server issued identifier for the session keys used by this downlink.",
              "format": "byte",
              "type": "string"
            },
            "version_ids": {
              "description": "Identifies an end device model with version information.",
              "properties": {
                "band_id": {
                  "type": "string"
                },
                "brand_id": {
                  "type": "string"
                },
                "firmware_version": {
                  "type": "string"
                },
                "hardware_version": {
                  "type": "string"
                },
                "model_id": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "resets_join_nonces": {
        "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "root_keys": {
        "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
        "properties": {
          "app_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "nwk_key": {
            "properties": {
              "encrypted_key": {
                "format": "byte",
                "type": "string"
              },
              "kek_label": {
                "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                "type": "string"
              },
              "key": {
                "description": "The unencrypted AES key.",
                "example": "0123456789ABCDEF0123456789ABCDEF",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "root_key_id": {
            "description": "Join Server issued identifier for the root keys.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "serial_number": {
        "type": "string"
      },
      "service_profile_id": {
        "description": "Default service profile. Stored in Entity Registry.",
        "type": "string"
      },
      "session": {
        "properties": {
          "dev_addr": {
            "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "keys": {
            "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
            "properties": {
              "app_s_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "f_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_s_enc_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "s_nwk_s_int_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                "format": "byte",
                "type": "string"
              }
            },
            "type": "object"
          },
          "last_a_f_cnt_down": {
            "description": "Last application downlink frame counter value used. Application Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_conf_f_cnt_down": {
            "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "last_f_cnt_up": {
            "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
            "format": "int64",
            "type": "integer"
          },
          "last_n_f_cnt_down": {
            "description": "Last network downlink frame counter value used. Network Server only.",
            "format": "int64",
            "type": "integer"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "started_at": {
            "description": "Time when the session started. Network Server only.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "skip_payload_crypto": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
        "type": "boolean"
      },
      "skip_payload_crypto_override": {
        "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
        "type": "boolean"
      },
      "supports_class_b": {
        "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_class_c": {
        "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "supports_join": {
        "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
        "type": "boolean"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "used_dev_nonces": {
        "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
        "items": {
          "format": "int64",
          "type": "integer"
        },
        "type": "array"
      },
      "version_ids": {
        "description": "Identifies an end device model with version information.",
        "properties": {
          "band_id": {
            "type": "string"
          },
          "brand_id": {
            "type": "string"
          },
          "firmware_version": {
            "type": "string"
          },
          "hardware_version": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "format_id": {
    "description": "QR code format identifier. Enumerate available formats with rpc ListFormats in the EndDeviceQRCodeGenerator service.",
    "type": "string"
  },
  "image": {
    "properties": {
      "image_size": {
        "description": "Requested QR code image dimension in pixels.",
        "format": "int64",
        "type": "integer"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "image": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "text": {
    "description": "Text representation of the QR code contents.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/qr-codes/end-devices/formats

Returns the supported formats.

Expand Collapse

Request Parameters
Field Type Required Description
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "formats": {
    "additionalProperties": {
      "properties": {
        "description": {
          "type": "string"
        },
        "field_mask": {
          "description": "The entity fields required to generate the QR code.",
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "description": "Available formats. The map key is the format identifier.",
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/qr-codes/end-devices/formats/{format_id}

Return the QR code format.

Expand Collapse

Request Parameters
Field Type Required Description
format_id string true QR code format identifier. Enumerate available formats with rpc ListFormats in the EndDeviceQRCodeGenerator service.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "description": {
    "type": "string"
  },
  "field_mask": {
    "description": "The entity fields required to generate the QR code.",
    "type": "string"
  },
  "name": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/qr-codes/end-devices/parse

Parse QR Codes of known formats and return the information contained within.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "format_id": {
    "description": "QR code format identifier.\nEnumerate available formats with the rpc `ListFormats`.\nIf this field is not specified, the server will attempt to parse the data with each known format.",
    "type": "string"
  },
  "qr_code": {
    "description": "Raw QR code contents.",
    "format": "byte",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_device_template": {
    "properties": {
      "end_device": {
        "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
        "properties": {
          "activated_at": {
            "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
            "format": "date-time",
            "type": "string"
          },
          "application_server_address": {
            "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
            "type": "string"
          },
          "application_server_id": {
            "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
            "type": "string"
          },
          "application_server_kek_label": {
            "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
            "type": "string"
          },
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
            "type": "object"
          },
          "battery_percentage": {
            "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
            "format": "float",
            "type": "number"
          },
          "claim_authentication_code": {
            "description": "Authentication code for end devices.",
            "properties": {
              "valid_from": {
                "format": "date-time",
                "type": "string"
              },
              "valid_to": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Description of the device. Stored in Entity Registry.",
            "type": "string"
          },
          "downlink_margin": {
            "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
            "format": "int32",
            "type": "integer"
          },
          "formatters": {
            "properties": {
              "down_formatter": {
                "default": "FORMATTER_NONE",
                "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
                "enum": [
                  "FORMATTER_NONE",
                  "FORMATTER_REPOSITORY",
                  "FORMATTER_GRPC_SERVICE",
                  "FORMATTER_JAVASCRIPT",
                  "FORMATTER_CAYENNELPP"
                ],
                "type": "string"
              },
              "down_formatter_parameter": {
                "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
                "type": "string"
              },
              "up_formatter": {
                "default": "FORMATTER_NONE",
                "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
                "enum": [
                  "FORMATTER_NONE",
                  "FORMATTER_REPOSITORY",
                  "FORMATTER_GRPC_SERVICE",
                  "FORMATTER_JAVASCRIPT",
                  "FORMATTER_CAYENNELPP"
                ],
                "type": "string"
              },
              "up_formatter_parameter": {
                "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "frequency_plan_id": {
            "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "string"
          },
          "ids": {
            "properties": {
              "application_ids": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "dev_addr": {
                "description": "The LoRaWAN DevAddr.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "dev_eui": {
                "description": "The LoRaWAN DevEUI.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "device_id": {
                "type": "string"
              },
              "join_eui": {
                "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "join_server_address": {
            "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
            "type": "string"
          },
          "label_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "last_dev_nonce": {
            "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_dev_status_received_at": {
            "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
            "format": "date-time",
            "type": "string"
          },
          "last_join_nonce": {
            "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_rj_count_0": {
            "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_rj_count_1": {
            "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_seen_at": {
            "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
            "format": "date-time",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "Location of the device. Stored in Entity Registry.",
            "type": "object"
          },
          "lora_alliance_profile_ids": {
            "properties": {
              "vendor_id": {
                "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
                "format": "int64",
                "type": "integer"
              },
              "vendor_profile_id": {
                "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "lorawan_phy_version": {
            "default": "PHY_UNKNOWN",
            "enum": [
              "PHY_UNKNOWN",
              "PHY_V1_0",
              "TS001_V1_0",
              "PHY_V1_0_1",
              "TS001_V1_0_1",
              "PHY_V1_0_2_REV_A",
              "RP001_V1_0_2",
              "PHY_V1_0_2_REV_B",
              "RP001_V1_0_2_REV_B",
              "PHY_V1_1_REV_A",
              "RP001_V1_1_REV_A",
              "PHY_V1_1_REV_B",
              "RP001_V1_1_REV_B",
              "PHY_V1_0_3_REV_A",
              "RP001_V1_0_3_REV_A",
              "RP002_V1_0_0",
              "RP002_V1_0_1",
              "RP002_V1_0_2",
              "RP002_V1_0_3",
              "RP002_V1_0_4"
            ],
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "mac_settings": {
            "properties": {
              "adr": {
                "description": "Adaptive Data Rate settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                    "type": "object"
                  },
                  "dynamic": {
                    "description": "Configuration options for dynamic ADR.",
                    "properties": {
                      "channel_steering": {
                        "description": "EXPERIMENTAL: Channel steering settings.",
                        "properties": {
                          "disabled": {
                            "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                            "type": "object"
                          },
                          "lora_narrow": {
                            "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "margin": {
                        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "float",
                        "type": "number"
                      },
                      "max_data_rate_index": {
                        "properties": {
                          "value": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_tx_power_index": {
                        "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_data_rate_index": {
                        "properties": {
                          "value": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_tx_power_index": {
                        "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "overrides": {
                        "description": "EXPERIMENTAL: Configuration overrides.",
                        "properties": {
                          "data_rate_0": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_1": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_10": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_11": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_12": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_13": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_14": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_15": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_2": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_3": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_4": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_5": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_6": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_7": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_8": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_9": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "static": {
                    "description": "Configuration options for static ADR.",
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "description": "Number of retransmissions.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "description": "Transmission power index to use.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "adr_margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
                "format": "float",
                "type": "number"
              },
              "beacon_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "class_b_c_downlink_interval": {
                "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
                "type": "string"
              },
              "class_b_timeout": {
                "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
                "type": "string"
              },
              "class_c_timeout": {
                "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
                "type": "string"
              },
              "desired_adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_beacon_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_max_duty_cycle": {
                "properties": {
                  "value": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_max_eirp": {
                "properties": {
                  "value": {
                    "default": "DEVICE_EIRP_8",
                    "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                    "enum": [
                      "DEVICE_EIRP_8",
                      "DEVICE_EIRP_10",
                      "DEVICE_EIRP_12",
                      "DEVICE_EIRP_13",
                      "DEVICE_EIRP_14",
                      "DEVICE_EIRP_16",
                      "DEVICE_EIRP_18",
                      "DEVICE_EIRP_20",
                      "DEVICE_EIRP_21",
                      "DEVICE_EIRP_24",
                      "DEVICE_EIRP_26",
                      "DEVICE_EIRP_27",
                      "DEVICE_EIRP_29",
                      "DEVICE_EIRP_30",
                      "DEVICE_EIRP_33",
                      "DEVICE_EIRP_36"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_ping_slot_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_ping_slot_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_relay": {
                "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "desired_rx1_data_rate_offset": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_rx1_delay": {
                "properties": {
                  "value": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_rx2_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_rx2_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "factory_preset_frequencies": {
                "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "max_duty_cycle": {
                "properties": {
                  "value": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_periodicity": {
                "properties": {
                  "value": {
                    "default": "PING_EVERY_1S",
                    "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                    "enum": [
                      "PING_EVERY_1S",
                      "PING_EVERY_2S",
                      "PING_EVERY_4S",
                      "PING_EVERY_8S",
                      "PING_EVERY_16S",
                      "PING_EVERY_32S",
                      "PING_EVERY_64S",
                      "PING_EVERY_128S"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "relay": {
                "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "resets_f_cnt": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx1_delay": {
                "properties": {
                  "value": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx2_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx2_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "schedule_downlinks": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "status_count_periodicity": {
                "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "status_time_periodicity": {
                "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
                "type": "string"
              },
              "supports_32_bit_f_cnt": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "use_adr": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "mac_settings_profile_ids": {
            "properties": {
              "application_ids": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "profile_id": {
                "description": "Profile ID.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "mac_state": {
            "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
            "properties": {
              "current_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "desired_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "device_class": {
                "default": "CLASS_A",
                "enum": [
                  "CLASS_A",
                  "CLASS_B",
                  "CLASS_C"
                ],
                "type": "string"
              },
              "last_adr_change_f_cnt_up": {
                "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
                "format": "int64",
                "type": "integer"
              },
              "last_confirmed_downlink_at": {
                "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_dev_status_f_cnt_up": {
                "description": "Frame counter value of last uplink containing DevStatusAns.",
                "format": "int64",
                "type": "integer"
              },
              "last_downlink_at": {
                "description": "Time when the last downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_network_initiated_downlink_at": {
                "description": "Time when the last network-initiated downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "lorawan_version": {
                "default": "MAC_UNKNOWN",
                "enum": [
                  "MAC_UNKNOWN",
                  "MAC_V1_0",
                  "MAC_V1_0_1",
                  "MAC_V1_0_2",
                  "MAC_V1_1",
                  "MAC_V1_0_3",
                  "MAC_V1_0_4"
                ],
                "type": "string"
              },
              "pending_application_downlink": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "pending_join_request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_relay_downlink": {
                "properties": {
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_requests": {
                "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "ping_slot_periodicity": {
                "properties": {
                  "value": {
                    "default": "PING_EVERY_1S",
                    "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                    "enum": [
                      "PING_EVERY_1S",
                      "PING_EVERY_2S",
                      "PING_EVERY_4S",
                      "PING_EVERY_8S",
                      "PING_EVERY_16S",
                      "PING_EVERY_32S",
                      "PING_EVERY_64S",
                      "PING_EVERY_128S"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "queued_join_accept": {
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dev_addr": {
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "keys": {
                    "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                    "properties": {
                      "app_s_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "f_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "nwk_s_enc_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "s_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "session_key_id": {
                        "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "net_id": {
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "payload": {
                    "description": "Payload of the join-accept received from Join Server.",
                    "format": "byte",
                    "type": "string"
                  },
                  "request": {
                    "properties": {
                      "cf_list": {
                        "properties": {
                          "ch_masks": {
                            "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                            "items": {
                              "type": "boolean"
                            },
                            "type": "array"
                          },
                          "freq": {
                            "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                            "items": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "type": "array"
                          },
                          "type": {
                            "default": "FREQUENCIES",
                            "enum": [
                              "FREQUENCIES",
                              "CHANNEL_MASKS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "downlink_settings": {
                        "properties": {
                          "opt_neg": {
                            "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                            "type": "boolean"
                          },
                          "rx1_dr_offset": {
                            "default": "DATA_RATE_OFFSET_0",
                            "enum": [
                              "DATA_RATE_OFFSET_0",
                              "DATA_RATE_OFFSET_1",
                              "DATA_RATE_OFFSET_2",
                              "DATA_RATE_OFFSET_3",
                              "DATA_RATE_OFFSET_4",
                              "DATA_RATE_OFFSET_5",
                              "DATA_RATE_OFFSET_6",
                              "DATA_RATE_OFFSET_7"
                            ],
                            "type": "string"
                          },
                          "rx2_dr": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "rx_delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "queued_responses": {
                "description": "Queued MAC responses.\nRegenerated on each uplink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_downlinks": {
                "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "payload": {
                      "properties": {
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "full_f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_mac_command_identifiers": {
                "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
                "items": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "type": "array"
              },
              "recent_uplinks": {
                "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "device_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "payload": {
                      "properties": {
                        "join_accept_payload": {
                          "properties": {
                            "cf_list": {
                              "properties": {
                                "ch_masks": {
                                  "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                  "items": {
                                    "type": "boolean"
                                  },
                                  "type": "array"
                                },
                                "freq": {
                                  "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                  "items": {
                                    "format": "int64",
                                    "type": "integer"
                                  },
                                  "type": "array"
                                },
                                "type": {
                                  "default": "FREQUENCIES",
                                  "enum": [
                                    "FREQUENCIES",
                                    "CHANNEL_MASKS"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dl_settings": {
                              "properties": {
                                "opt_neg": {
                                  "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                  "type": "boolean"
                                },
                                "rx1_dr_offset": {
                                  "default": "DATA_RATE_OFFSET_0",
                                  "enum": [
                                    "DATA_RATE_OFFSET_0",
                                    "DATA_RATE_OFFSET_1",
                                    "DATA_RATE_OFFSET_2",
                                    "DATA_RATE_OFFSET_3",
                                    "DATA_RATE_OFFSET_4",
                                    "DATA_RATE_OFFSET_5",
                                    "DATA_RATE_OFFSET_6",
                                    "DATA_RATE_OFFSET_7"
                                  ],
                                  "type": "string"
                                },
                                "rx2_dr": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "encrypted": {
                              "format": "byte",
                              "type": "string"
                            },
                            "join_nonce": {
                              "example": "ABCDEF",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rx_delay": {
                              "default": "RX_DELAY_0",
                              "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                              "enum": [
                                "RX_DELAY_0",
                                "RX_DELAY_1",
                                "RX_DELAY_2",
                                "RX_DELAY_3",
                                "RX_DELAY_4",
                                "RX_DELAY_5",
                                "RX_DELAY_6",
                                "RX_DELAY_7",
                                "RX_DELAY_8",
                                "RX_DELAY_9",
                                "RX_DELAY_10",
                                "RX_DELAY_11",
                                "RX_DELAY_12",
                                "RX_DELAY_13",
                                "RX_DELAY_14",
                                "RX_DELAY_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dev_nonce": {
                              "example": "ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            },
                            "major": {
                              "default": "LORAWAN_R1",
                              "enum": [
                                "LORAWAN_R1"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "decoded_payload": {
                              "type": "object"
                            },
                            "f_hdr": {
                              "properties": {
                                "dev_addr": {
                                  "example": "2600ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "f_cnt": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "f_ctrl": {
                                  "properties": {
                                    "ack": {
                                      "type": "boolean"
                                    },
                                    "adr": {
                                      "type": "boolean"
                                    },
                                    "adr_ack_req": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "class_b": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "f_pending": {
                                      "description": "Only on downlink.",
                                      "type": "boolean"
                                    }
                                  },
                                  "type": "object"
                                },
                                "f_opts": {
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "frm_payload": {
                              "format": "byte",
                              "type": "string"
                            },
                            "full_f_cnt": {
                              "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "mic": {
                          "format": "byte",
                          "type": "string"
                        },
                        "rejoin_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rejoin_cnt": {
                              "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "rejoin_type": {
                              "default": "CONTEXT",
                              "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                              "enum": [
                                "CONTEXT",
                                "SESSION",
                                "KEYS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "title": "Message represents a LoRaWAN message",
                      "type": "object"
                    },
                    "received_at": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "rx_metadata": {
                      "items": {
                        "properties": {
                          "channel_rssi": {
                            "format": "float",
                            "type": "number"
                          },
                          "downlink_path_constraint": {
                            "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                            "enum": [
                              "DOWNLINK_PATH_CONSTRAINT_NONE",
                              "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                              "DOWNLINK_PATH_CONSTRAINT_NEVER"
                            ],
                            "type": "string"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "packet_broker": {
                            "type": "object"
                          },
                          "relay": {
                            "type": "object"
                          },
                          "snr": {
                            "format": "float",
                            "type": "number"
                          },
                          "uplink_token": {
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "settings": {
                      "properties": {
                        "data_rate": {
                          "properties": {
                            "fsk": {
                              "properties": {
                                "bit_rate": {
                                  "description": "Bit rate (bps).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lora": {
                              "properties": {
                                "bandwidth": {
                                  "description": "Bandwidth (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "coding_rate": {
                                  "type": "string"
                                },
                                "spreading_factor": {
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lrfhss": {
                              "properties": {
                                "coding_rate": {
                                  "type": "string"
                                },
                                "modulation_type": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "operating_channel_width": {
                                  "description": "Operating Channel Width (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "rejected_adr_data_rate_indexes": {
                "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
                "items": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "rejected_adr_tx_power_indexes": {
                "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "rejected_data_rate_ranges": {
                "additionalProperties": {
                  "properties": {
                    "ranges": {
                      "items": {
                        "properties": {
                          "max_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "min_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "description": "Data rate ranges rejected by the device per frequency.",
                "type": "object"
              },
              "rejected_frequencies": {
                "description": "Frequencies rejected by the device.",
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "rx_windows_available": {
                "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_frequency": {
            "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "format": "uint64",
            "type": "string"
          },
          "min_frequency": {
            "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "format": "uint64",
            "type": "string"
          },
          "multicast": {
            "description": "Indicates whether this device represents a multicast group.",
            "type": "boolean"
          },
          "name": {
            "description": "Friendly name of the device. Stored in Entity Registry.",
            "type": "string"
          },
          "net_id": {
            "description": "Home NetID. Stored in Join Server.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "network_server_address": {
            "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
            "type": "string"
          },
          "network_server_kek_label": {
            "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
            "type": "string"
          },
          "pending_mac_state": {
            "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
            "properties": {
              "current_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "desired_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "device_class": {
                "default": "CLASS_A",
                "enum": [
                  "CLASS_A",
                  "CLASS_B",
                  "CLASS_C"
                ],
                "type": "string"
              },
              "last_adr_change_f_cnt_up": {
                "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
                "format": "int64",
                "type": "integer"
              },
              "last_confirmed_downlink_at": {
                "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_dev_status_f_cnt_up": {
                "description": "Frame counter value of last uplink containing DevStatusAns.",
                "format": "int64",
                "type": "integer"
              },
              "last_downlink_at": {
                "description": "Time when the last downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_network_initiated_downlink_at": {
                "description": "Time when the last network-initiated downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "lorawan_version": {
                "default": "MAC_UNKNOWN",
                "enum": [
                  "MAC_UNKNOWN",
                  "MAC_V1_0",
                  "MAC_V1_0_1",
                  "MAC_V1_0_2",
                  "MAC_V1_1",
                  "MAC_V1_0_3",
                  "MAC_V1_0_4"
                ],
                "type": "string"
              },
              "pending_application_downlink": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "pending_join_request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_relay_downlink": {
                "properties": {
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_requests": {
                "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "ping_slot_periodicity": {
                "properties": {
                  "value": {
                    "default": "PING_EVERY_1S",
                    "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                    "enum": [
                      "PING_EVERY_1S",
                      "PING_EVERY_2S",
                      "PING_EVERY_4S",
                      "PING_EVERY_8S",
                      "PING_EVERY_16S",
                      "PING_EVERY_32S",
                      "PING_EVERY_64S",
                      "PING_EVERY_128S"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "queued_join_accept": {
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dev_addr": {
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "keys": {
                    "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                    "properties": {
                      "app_s_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "f_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "nwk_s_enc_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "s_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "session_key_id": {
                        "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "net_id": {
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "payload": {
                    "description": "Payload of the join-accept received from Join Server.",
                    "format": "byte",
                    "type": "string"
                  },
                  "request": {
                    "properties": {
                      "cf_list": {
                        "properties": {
                          "ch_masks": {
                            "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                            "items": {
                              "type": "boolean"
                            },
                            "type": "array"
                          },
                          "freq": {
                            "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                            "items": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "type": "array"
                          },
                          "type": {
                            "default": "FREQUENCIES",
                            "enum": [
                              "FREQUENCIES",
                              "CHANNEL_MASKS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "downlink_settings": {
                        "properties": {
                          "opt_neg": {
                            "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                            "type": "boolean"
                          },
                          "rx1_dr_offset": {
                            "default": "DATA_RATE_OFFSET_0",
                            "enum": [
                              "DATA_RATE_OFFSET_0",
                              "DATA_RATE_OFFSET_1",
                              "DATA_RATE_OFFSET_2",
                              "DATA_RATE_OFFSET_3",
                              "DATA_RATE_OFFSET_4",
                              "DATA_RATE_OFFSET_5",
                              "DATA_RATE_OFFSET_6",
                              "DATA_RATE_OFFSET_7"
                            ],
                            "type": "string"
                          },
                          "rx2_dr": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "rx_delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "queued_responses": {
                "description": "Queued MAC responses.\nRegenerated on each uplink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_downlinks": {
                "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "payload": {
                      "properties": {
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "full_f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_mac_command_identifiers": {
                "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
                "items": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "type": "array"
              },
              "recent_uplinks": {
                "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "device_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "payload": {
                      "properties": {
                        "join_accept_payload": {
                          "properties": {
                            "cf_list": {
                              "properties": {
                                "ch_masks": {
                                  "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                  "items": {
                                    "type": "boolean"
                                  },
                                  "type": "array"
                                },
                                "freq": {
                                  "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                  "items": {
                                    "format": "int64",
                                    "type": "integer"
                                  },
                                  "type": "array"
                                },
                                "type": {
                                  "default": "FREQUENCIES",
                                  "enum": [
                                    "FREQUENCIES",
                                    "CHANNEL_MASKS"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dl_settings": {
                              "properties": {
                                "opt_neg": {
                                  "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                  "type": "boolean"
                                },
                                "rx1_dr_offset": {
                                  "default": "DATA_RATE_OFFSET_0",
                                  "enum": [
                                    "DATA_RATE_OFFSET_0",
                                    "DATA_RATE_OFFSET_1",
                                    "DATA_RATE_OFFSET_2",
                                    "DATA_RATE_OFFSET_3",
                                    "DATA_RATE_OFFSET_4",
                                    "DATA_RATE_OFFSET_5",
                                    "DATA_RATE_OFFSET_6",
                                    "DATA_RATE_OFFSET_7"
                                  ],
                                  "type": "string"
                                },
                                "rx2_dr": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "encrypted": {
                              "format": "byte",
                              "type": "string"
                            },
                            "join_nonce": {
                              "example": "ABCDEF",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rx_delay": {
                              "default": "RX_DELAY_0",
                              "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                              "enum": [
                                "RX_DELAY_0",
                                "RX_DELAY_1",
                                "RX_DELAY_2",
                                "RX_DELAY_3",
                                "RX_DELAY_4",
                                "RX_DELAY_5",
                                "RX_DELAY_6",
                                "RX_DELAY_7",
                                "RX_DELAY_8",
                                "RX_DELAY_9",
                                "RX_DELAY_10",
                                "RX_DELAY_11",
                                "RX_DELAY_12",
                                "RX_DELAY_13",
                                "RX_DELAY_14",
                                "RX_DELAY_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dev_nonce": {
                              "example": "ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            },
                            "major": {
                              "default": "LORAWAN_R1",
                              "enum": [
                                "LORAWAN_R1"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "decoded_payload": {
                              "type": "object"
                            },
                            "f_hdr": {
                              "properties": {
                                "dev_addr": {
                                  "example": "2600ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "f_cnt": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "f_ctrl": {
                                  "properties": {
                                    "ack": {
                                      "type": "boolean"
                                    },
                                    "adr": {
                                      "type": "boolean"
                                    },
                                    "adr_ack_req": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "class_b": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "f_pending": {
                                      "description": "Only on downlink.",
                                      "type": "boolean"
                                    }
                                  },
                                  "type": "object"
                                },
                                "f_opts": {
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "frm_payload": {
                              "format": "byte",
                              "type": "string"
                            },
                            "full_f_cnt": {
                              "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "mic": {
                          "format": "byte",
                          "type": "string"
                        },
                        "rejoin_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rejoin_cnt": {
                              "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "rejoin_type": {
                              "default": "CONTEXT",
                              "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                              "enum": [
                                "CONTEXT",
                                "SESSION",
                                "KEYS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "title": "Message represents a LoRaWAN message",
                      "type": "object"
                    },
                    "received_at": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "rx_metadata": {
                      "items": {
                        "properties": {
                          "channel_rssi": {
                            "format": "float",
                            "type": "number"
                          },
                          "downlink_path_constraint": {
                            "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                            "enum": [
                              "DOWNLINK_PATH_CONSTRAINT_NONE",
                              "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                              "DOWNLINK_PATH_CONSTRAINT_NEVER"
                            ],
                            "type": "string"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "packet_broker": {
                            "type": "object"
                          },
                          "relay": {
                            "type": "object"
                          },
                          "snr": {
                            "format": "float",
                            "type": "number"
                          },
                          "uplink_token": {
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "settings": {
                      "properties": {
                        "data_rate": {
                          "properties": {
                            "fsk": {
                              "properties": {
                                "bit_rate": {
                                  "description": "Bit rate (bps).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lora": {
                              "properties": {
                                "bandwidth": {
                                  "description": "Bandwidth (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "coding_rate": {
                                  "type": "string"
                                },
                                "spreading_factor": {
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lrfhss": {
                              "properties": {
                                "coding_rate": {
                                  "type": "string"
                                },
                                "modulation_type": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "operating_channel_width": {
                                  "description": "Operating Channel Width (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "rejected_adr_data_rate_indexes": {
                "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
                "items": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "rejected_adr_tx_power_indexes": {
                "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "rejected_data_rate_ranges": {
                "additionalProperties": {
                  "properties": {
                    "ranges": {
                      "items": {
                        "properties": {
                          "max_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "min_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "description": "Data rate ranges rejected by the device per frequency.",
                "type": "object"
              },
              "rejected_frequencies": {
                "description": "Frequencies rejected by the device.",
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "rx_windows_available": {
                "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "pending_session": {
            "properties": {
              "dev_addr": {
                "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "last_a_f_cnt_down": {
                "description": "Last application downlink frame counter value used. Application Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_conf_f_cnt_down": {
                "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_f_cnt_up": {
                "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
                "format": "int64",
                "type": "integer"
              },
              "last_n_f_cnt_down": {
                "description": "Last network downlink frame counter value used. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "queued_application_downlinks": {
                "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
                "items": {
                  "properties": {
                    "attributes": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Attributes for devices, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "class_b_c": {
                      "properties": {
                        "absolute_time": {
                          "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                          "format": "date-time",
                          "type": "string"
                        },
                        "gateways": {
                          "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                          "items": {
                            "properties": {
                              "antenna_index": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "gateway_ids": {
                                "properties": {
                                  "eui": {
                                    "description": "Secondary identifier, which can only be used in specific requests.",
                                    "example": "70B3D57ED000ABCD",
                                    "format": "string",
                                    "type": "string"
                                  },
                                  "gateway_id": {
                                    "type": "string"
                                  }
                                },
                                "type": "object"
                              },
                              "group_index": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    },
                    "confirmed": {
                      "type": "boolean"
                    },
                    "confirmed_retry": {
                      "properties": {
                        "attempt": {
                          "description": "The number of attempted confirmed downlink acknowledgements.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "max_attempts": {
                          "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "decoded_payload": {
                      "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                      "type": "object"
                    },
                    "decoded_payload_warnings": {
                      "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                      "format": "byte",
                      "type": "string"
                    },
                    "locations": {
                      "additionalProperties": {
                        "properties": {
                          "accuracy": {
                            "description": "The accuracy of the location (meters).",
                            "format": "int32",
                            "type": "integer"
                          },
                          "altitude": {
                            "description": "The altitude (meters), where 0 is the mean sea level.",
                            "format": "int32",
                            "type": "integer"
                          },
                          "latitude": {
                            "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "longitude": {
                            "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "source": {
                            "default": "SOURCE_UNKNOWN",
                            "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                            "enum": [
                              "SOURCE_UNKNOWN",
                              "SOURCE_GPS",
                              "SOURCE_REGISTRY",
                              "SOURCE_IP_GEOLOCATION",
                              "SOURCE_WIFI_RSSI_GEOLOCATION",
                              "SOURCE_BT_RSSI_GEOLOCATION",
                              "SOURCE_LORA_RSSI_GEOLOCATION",
                              "SOURCE_LORA_TDOA_GEOLOCATION",
                              "SOURCE_COMBINED_GEOLOCATION"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "description": "End device location metadata, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "network_ids": {
                      "description": "Identifies a Network Server.",
                      "properties": {
                        "cluster_address": {
                          "description": "Cluster address of the Network Server.",
                          "type": "string"
                        },
                        "cluster_id": {
                          "description": "Cluster identifier of the Network Server.",
                          "type": "string"
                        },
                        "net_id": {
                          "description": "LoRa Alliance NetID.",
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "ns_id": {
                          "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "tenant_address": {
                          "description": "Optional tenant address for multi-tenant deployments.",
                          "type": "string"
                        },
                        "tenant_id": {
                          "description": "Optional tenant identifier for multi-tenant deployments.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "priority": {
                      "default": "LOWEST",
                      "enum": [
                        "LOWEST",
                        "LOW",
                        "BELOW_NORMAL",
                        "NORMAL",
                        "ABOVE_NORMAL",
                        "HIGH",
                        "HIGHEST"
                      ],
                      "type": "string"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys used by this downlink.",
                      "format": "byte",
                      "type": "string"
                    },
                    "version_ids": {
                      "description": "Identifies an end device model with version information.",
                      "properties": {
                        "band_id": {
                          "type": "string"
                        },
                        "brand_id": {
                          "type": "string"
                        },
                        "firmware_version": {
                          "type": "string"
                        },
                        "hardware_version": {
                          "type": "string"
                        },
                        "model_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "started_at": {
                "description": "Time when the session started. Network Server only.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object"
          },
          "picture": {
            "properties": {
              "embedded": {
                "properties": {
                  "data": {
                    "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                    "format": "byte",
                    "type": "string"
                  },
                  "mime_type": {
                    "description": "MIME type of the picture.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "sizes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "URLs of the picture for different sizes, if available on a CDN.",
                "type": "object"
              }
            },
            "type": "object"
          },
          "power_state": {
            "default": "POWER_UNKNOWN",
            "description": "Power state of the device.",
            "enum": [
              "POWER_UNKNOWN",
              "POWER_BATTERY",
              "POWER_EXTERNAL"
            ],
            "type": "string"
          },
          "provisioner_id": {
            "description": "ID of the provisioner. Stored in Join Server.",
            "type": "string"
          },
          "provisioning_data": {
            "description": "Vendor-specific provisioning data. Stored in Join Server.",
            "type": "object"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "resets_join_nonces": {
            "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "root_keys": {
            "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
            "properties": {
              "app_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "root_key_id": {
                "description": "Join Server issued identifier for the root keys.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serial_number": {
            "type": "string"
          },
          "service_profile_id": {
            "description": "Default service profile. Stored in Entity Registry.",
            "type": "string"
          },
          "session": {
            "properties": {
              "dev_addr": {
                "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "last_a_f_cnt_down": {
                "description": "Last application downlink frame counter value used. Application Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_conf_f_cnt_down": {
                "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_f_cnt_up": {
                "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
                "format": "int64",
                "type": "integer"
              },
              "last_n_f_cnt_down": {
                "description": "Last network downlink frame counter value used. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "queued_application_downlinks": {
                "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
                "items": {
                  "properties": {
                    "attributes": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Attributes for devices, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "class_b_c": {
                      "properties": {
                        "absolute_time": {
                          "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                          "format": "date-time",
                          "type": "string"
                        },
                        "gateways": {
                          "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                          "items": {
                            "properties": {
                              "antenna_index": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "gateway_ids": {
                                "properties": {
                                  "eui": {
                                    "description": "Secondary identifier, which can only be used in specific requests.",
                                    "example": "70B3D57ED000ABCD",
                                    "format": "string",
                                    "type": "string"
                                  },
                                  "gateway_id": {
                                    "type": "string"
                                  }
                                },
                                "type": "object"
                              },
                              "group_index": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    },
                    "confirmed": {
                      "type": "boolean"
                    },
                    "confirmed_retry": {
                      "properties": {
                        "attempt": {
                          "description": "The number of attempted confirmed downlink acknowledgements.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "max_attempts": {
                          "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "decoded_payload": {
                      "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                      "type": "object"
                    },
                    "decoded_payload_warnings": {
                      "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                      "format": "byte",
                      "type": "string"
                    },
                    "locations": {
                      "additionalProperties": {
                        "properties": {
                          "accuracy": {
                            "description": "The accuracy of the location (meters).",
                            "format": "int32",
                            "type": "integer"
                          },
                          "altitude": {
                            "description": "The altitude (meters), where 0 is the mean sea level.",
                            "format": "int32",
                            "type": "integer"
                          },
                          "latitude": {
                            "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "longitude": {
                            "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "source": {
                            "default": "SOURCE_UNKNOWN",
                            "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                            "enum": [
                              "SOURCE_UNKNOWN",
                              "SOURCE_GPS",
                              "SOURCE_REGISTRY",
                              "SOURCE_IP_GEOLOCATION",
                              "SOURCE_WIFI_RSSI_GEOLOCATION",
                              "SOURCE_BT_RSSI_GEOLOCATION",
                              "SOURCE_LORA_RSSI_GEOLOCATION",
                              "SOURCE_LORA_TDOA_GEOLOCATION",
                              "SOURCE_COMBINED_GEOLOCATION"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "description": "End device location metadata, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "network_ids": {
                      "description": "Identifies a Network Server.",
                      "properties": {
                        "cluster_address": {
                          "description": "Cluster address of the Network Server.",
                          "type": "string"
                        },
                        "cluster_id": {
                          "description": "Cluster identifier of the Network Server.",
                          "type": "string"
                        },
                        "net_id": {
                          "description": "LoRa Alliance NetID.",
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "ns_id": {
                          "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "tenant_address": {
                          "description": "Optional tenant address for multi-tenant deployments.",
                          "type": "string"
                        },
                        "tenant_id": {
                          "description": "Optional tenant identifier for multi-tenant deployments.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "priority": {
                      "default": "LOWEST",
                      "enum": [
                        "LOWEST",
                        "LOW",
                        "BELOW_NORMAL",
                        "NORMAL",
                        "ABOVE_NORMAL",
                        "HIGH",
                        "HIGHEST"
                      ],
                      "type": "string"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys used by this downlink.",
                      "format": "byte",
                      "type": "string"
                    },
                    "version_ids": {
                      "description": "Identifies an end device model with version information.",
                      "properties": {
                        "band_id": {
                          "type": "string"
                        },
                        "brand_id": {
                          "type": "string"
                        },
                        "firmware_version": {
                          "type": "string"
                        },
                        "hardware_version": {
                          "type": "string"
                        },
                        "model_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "started_at": {
                "description": "Time when the session started. Network Server only.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object"
          },
          "skip_payload_crypto": {
            "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
            "type": "boolean"
          },
          "skip_payload_crypto_override": {
            "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
            "type": "boolean"
          },
          "supports_class_b": {
            "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "supports_class_c": {
            "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "supports_join": {
            "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "used_dev_nonces": {
            "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "field_mask": {
        "type": "string"
      },
      "mapping_key": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "format_id": {
    "description": "Identifier of the format used to successfully parse the QR code data.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/qr-codes/end-devices/{format_id}/parse

Parse QR Codes of known formats and return the information contained within.

Expand Collapse

Request Parameters
Field Type Required Description
format_id string true QR code format identifier. Enumerate available formats with the rpc `ListFormats`. If this field is not specified, the server will attempt to parse the data with each known format.
Request Body
Show JSON Schema
{
  "qr_code": {
    "description": "Raw QR code contents.",
    "format": "byte",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_device_template": {
    "properties": {
      "end_device": {
        "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
        "properties": {
          "activated_at": {
            "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
            "format": "date-time",
            "type": "string"
          },
          "application_server_address": {
            "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
            "type": "string"
          },
          "application_server_id": {
            "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
            "type": "string"
          },
          "application_server_kek_label": {
            "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
            "type": "string"
          },
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
            "type": "object"
          },
          "battery_percentage": {
            "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
            "format": "float",
            "type": "number"
          },
          "claim_authentication_code": {
            "description": "Authentication code for end devices.",
            "properties": {
              "valid_from": {
                "format": "date-time",
                "type": "string"
              },
              "valid_to": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Description of the device. Stored in Entity Registry.",
            "type": "string"
          },
          "downlink_margin": {
            "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
            "format": "int32",
            "type": "integer"
          },
          "formatters": {
            "properties": {
              "down_formatter": {
                "default": "FORMATTER_NONE",
                "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
                "enum": [
                  "FORMATTER_NONE",
                  "FORMATTER_REPOSITORY",
                  "FORMATTER_GRPC_SERVICE",
                  "FORMATTER_JAVASCRIPT",
                  "FORMATTER_CAYENNELPP"
                ],
                "type": "string"
              },
              "down_formatter_parameter": {
                "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
                "type": "string"
              },
              "up_formatter": {
                "default": "FORMATTER_NONE",
                "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
                "enum": [
                  "FORMATTER_NONE",
                  "FORMATTER_REPOSITORY",
                  "FORMATTER_GRPC_SERVICE",
                  "FORMATTER_JAVASCRIPT",
                  "FORMATTER_CAYENNELPP"
                ],
                "type": "string"
              },
              "up_formatter_parameter": {
                "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "frequency_plan_id": {
            "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "string"
          },
          "ids": {
            "properties": {
              "application_ids": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "dev_addr": {
                "description": "The LoRaWAN DevAddr.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "dev_eui": {
                "description": "The LoRaWAN DevEUI.",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              },
              "device_id": {
                "type": "string"
              },
              "join_eui": {
                "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                "example": "70B3D57ED000ABCD",
                "format": "string",
                "type": "string"
              }
            },
            "type": "object"
          },
          "join_server_address": {
            "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
            "type": "string"
          },
          "label_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "last_dev_nonce": {
            "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_dev_status_received_at": {
            "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
            "format": "date-time",
            "type": "string"
          },
          "last_join_nonce": {
            "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_rj_count_0": {
            "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_rj_count_1": {
            "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
            "format": "int64",
            "type": "integer"
          },
          "last_seen_at": {
            "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
            "format": "date-time",
            "type": "string"
          },
          "locations": {
            "additionalProperties": {
              "properties": {
                "accuracy": {
                  "description": "The accuracy of the location (meters).",
                  "format": "int32",
                  "type": "integer"
                },
                "altitude": {
                  "description": "The altitude (meters), where 0 is the mean sea level.",
                  "format": "int32",
                  "type": "integer"
                },
                "latitude": {
                  "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                  "format": "double",
                  "type": "number"
                },
                "longitude": {
                  "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                  "format": "double",
                  "type": "number"
                },
                "source": {
                  "default": "SOURCE_UNKNOWN",
                  "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                  "enum": [
                    "SOURCE_UNKNOWN",
                    "SOURCE_GPS",
                    "SOURCE_REGISTRY",
                    "SOURCE_IP_GEOLOCATION",
                    "SOURCE_WIFI_RSSI_GEOLOCATION",
                    "SOURCE_BT_RSSI_GEOLOCATION",
                    "SOURCE_LORA_RSSI_GEOLOCATION",
                    "SOURCE_LORA_TDOA_GEOLOCATION",
                    "SOURCE_COMBINED_GEOLOCATION"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "description": "Location of the device. Stored in Entity Registry.",
            "type": "object"
          },
          "lora_alliance_profile_ids": {
            "properties": {
              "vendor_id": {
                "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
                "format": "int64",
                "type": "integer"
              },
              "vendor_profile_id": {
                "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "lorawan_phy_version": {
            "default": "PHY_UNKNOWN",
            "enum": [
              "PHY_UNKNOWN",
              "PHY_V1_0",
              "TS001_V1_0",
              "PHY_V1_0_1",
              "TS001_V1_0_1",
              "PHY_V1_0_2_REV_A",
              "RP001_V1_0_2",
              "PHY_V1_0_2_REV_B",
              "RP001_V1_0_2_REV_B",
              "PHY_V1_1_REV_A",
              "RP001_V1_1_REV_A",
              "PHY_V1_1_REV_B",
              "RP001_V1_1_REV_B",
              "PHY_V1_0_3_REV_A",
              "RP001_V1_0_3_REV_A",
              "RP002_V1_0_0",
              "RP002_V1_0_1",
              "RP002_V1_0_2",
              "RP002_V1_0_3",
              "RP002_V1_0_4"
            ],
            "type": "string"
          },
          "lorawan_version": {
            "default": "MAC_UNKNOWN",
            "enum": [
              "MAC_UNKNOWN",
              "MAC_V1_0",
              "MAC_V1_0_1",
              "MAC_V1_0_2",
              "MAC_V1_1",
              "MAC_V1_0_3",
              "MAC_V1_0_4"
            ],
            "type": "string"
          },
          "mac_settings": {
            "properties": {
              "adr": {
                "description": "Adaptive Data Rate settings.",
                "properties": {
                  "disabled": {
                    "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                    "type": "object"
                  },
                  "dynamic": {
                    "description": "Configuration options for dynamic ADR.",
                    "properties": {
                      "channel_steering": {
                        "description": "EXPERIMENTAL: Channel steering settings.",
                        "properties": {
                          "disabled": {
                            "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                            "type": "object"
                          },
                          "lora_narrow": {
                            "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "margin": {
                        "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "float",
                        "type": "number"
                      },
                      "max_data_rate_index": {
                        "properties": {
                          "value": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "max_nb_trans": {
                        "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_tx_power_index": {
                        "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_data_rate_index": {
                        "properties": {
                          "value": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "min_nb_trans": {
                        "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "min_tx_power_index": {
                        "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "overrides": {
                        "description": "EXPERIMENTAL: Configuration overrides.",
                        "properties": {
                          "data_rate_0": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_1": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_10": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_11": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_12": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_13": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_14": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_15": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_2": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_3": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_4": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_5": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_6": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_7": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_8": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "data_rate_9": {
                            "description": "EXPERIMENTAL: Data rate index override settings.",
                            "properties": {
                              "max_nb_trans": {
                                "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "min_nb_trans": {
                                "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "static": {
                    "description": "Configuration options for static ADR.",
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "description": "Number of retransmissions.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "description": "Transmission power index to use.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "adr_margin": {
                "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
                "format": "float",
                "type": "number"
              },
              "beacon_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "class_b_c_downlink_interval": {
                "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
                "type": "string"
              },
              "class_b_timeout": {
                "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
                "type": "string"
              },
              "class_c_timeout": {
                "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
                "type": "string"
              },
              "desired_adr_ack_delay_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_DELAY_1",
                    "enum": [
                      "ADR_ACK_DELAY_1",
                      "ADR_ACK_DELAY_2",
                      "ADR_ACK_DELAY_4",
                      "ADR_ACK_DELAY_8",
                      "ADR_ACK_DELAY_16",
                      "ADR_ACK_DELAY_32",
                      "ADR_ACK_DELAY_64",
                      "ADR_ACK_DELAY_128",
                      "ADR_ACK_DELAY_256",
                      "ADR_ACK_DELAY_512",
                      "ADR_ACK_DELAY_1024",
                      "ADR_ACK_DELAY_2048",
                      "ADR_ACK_DELAY_4096",
                      "ADR_ACK_DELAY_8192",
                      "ADR_ACK_DELAY_16384",
                      "ADR_ACK_DELAY_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_adr_ack_limit_exponent": {
                "properties": {
                  "value": {
                    "default": "ADR_ACK_LIMIT_1",
                    "enum": [
                      "ADR_ACK_LIMIT_1",
                      "ADR_ACK_LIMIT_2",
                      "ADR_ACK_LIMIT_4",
                      "ADR_ACK_LIMIT_8",
                      "ADR_ACK_LIMIT_16",
                      "ADR_ACK_LIMIT_32",
                      "ADR_ACK_LIMIT_64",
                      "ADR_ACK_LIMIT_128",
                      "ADR_ACK_LIMIT_256",
                      "ADR_ACK_LIMIT_512",
                      "ADR_ACK_LIMIT_1024",
                      "ADR_ACK_LIMIT_2048",
                      "ADR_ACK_LIMIT_4096",
                      "ADR_ACK_LIMIT_8192",
                      "ADR_ACK_LIMIT_16384",
                      "ADR_ACK_LIMIT_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_beacon_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_max_duty_cycle": {
                "properties": {
                  "value": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_max_eirp": {
                "properties": {
                  "value": {
                    "default": "DEVICE_EIRP_8",
                    "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                    "enum": [
                      "DEVICE_EIRP_8",
                      "DEVICE_EIRP_10",
                      "DEVICE_EIRP_12",
                      "DEVICE_EIRP_13",
                      "DEVICE_EIRP_14",
                      "DEVICE_EIRP_16",
                      "DEVICE_EIRP_18",
                      "DEVICE_EIRP_20",
                      "DEVICE_EIRP_21",
                      "DEVICE_EIRP_24",
                      "DEVICE_EIRP_26",
                      "DEVICE_EIRP_27",
                      "DEVICE_EIRP_29",
                      "DEVICE_EIRP_30",
                      "DEVICE_EIRP_33",
                      "DEVICE_EIRP_36"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_ping_slot_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_ping_slot_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_relay": {
                "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "desired_rx1_data_rate_offset": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_rx1_delay": {
                "properties": {
                  "value": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_rx2_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "desired_rx2_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "downlink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "factory_preset_frequencies": {
                "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "max_duty_cycle": {
                "properties": {
                  "value": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "ping_slot_periodicity": {
                "properties": {
                  "value": {
                    "default": "PING_EVERY_1S",
                    "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                    "enum": [
                      "PING_EVERY_1S",
                      "PING_EVERY_2S",
                      "PING_EVERY_4S",
                      "PING_EVERY_8S",
                      "PING_EVERY_16S",
                      "PING_EVERY_32S",
                      "PING_EVERY_64S",
                      "PING_EVERY_128S"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "relay": {
                "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
                "properties": {
                  "served": {
                    "properties": {
                      "always": {
                        "type": "object"
                      },
                      "backoff": {
                        "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "dynamic": {
                        "properties": {
                          "smart_enable_level": {
                            "default": "RELAY_SMART_ENABLE_LEVEL_8",
                            "enum": [
                              "RELAY_SMART_ENABLE_LEVEL_8",
                              "RELAY_SMART_ENABLE_LEVEL_16",
                              "RELAY_SMART_ENABLE_LEVEL_32",
                              "RELAY_SMART_ENABLE_LEVEL_64"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "end_device_controlled": {
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving_device_id": {
                        "description": "End device identifier of the serving end device.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "serving": {
                    "properties": {
                      "cad_periodicity": {
                        "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                        "enum": [
                          "RELAY_CAD_PERIODICITY_1_SECOND",
                          "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                          "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                        ],
                        "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                        "type": "string"
                      },
                      "default_channel_index": {
                        "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "limits": {
                        "properties": {
                          "join_requests": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "notifications": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "overall": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "reset_behavior": {
                            "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "enum": [
                              "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                              "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                              "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                            ],
                            "type": "string"
                          },
                          "uplink_messages": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "second_channel": {
                        "properties": {
                          "ack_offset": {
                            "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "enum": [
                              "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "RELAY_SECOND_CH_ACK_OFFSET_200",
                              "RELAY_SECOND_CH_ACK_OFFSET_400",
                              "RELAY_SECOND_CH_ACK_OFFSET_800",
                              "RELAY_SECOND_CH_ACK_OFFSET_1600",
                              "RELAY_SECOND_CH_ACK_OFFSET_3200"
                            ],
                            "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                            "type": "string"
                          },
                          "data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "frequency": {
                            "description": "The frequency (Hz) used by the wake on radio message.",
                            "format": "uint64",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "uplink_forwarding_rules": {
                        "description": "Configured uplink forwarding rules.",
                        "items": {
                          "properties": {
                            "device_id": {
                              "description": "End device identifier of the served end device.",
                              "type": "string"
                            },
                            "last_w_f_cnt": {
                              "description": "Last wake on radio frame counter used by the served end device.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "limits": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "session_key_id": {
                              "description": "Session key ID of the session keys used to derive the root relay session key.",
                              "format": "byte",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "resets_f_cnt": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "rx1_data_rate_offset": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx1_delay": {
                "properties": {
                  "value": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx2_data_rate_index": {
                "properties": {
                  "value": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "rx2_frequency": {
                "properties": {
                  "value": {
                    "format": "uint64",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "schedule_downlinks": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "status_count_periodicity": {
                "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
                "format": "int64",
                "type": "integer"
              },
              "status_time_periodicity": {
                "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
                "type": "string"
              },
              "supports_32_bit_f_cnt": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "uplink_dwell_time": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "use_adr": {
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "mac_settings_profile_ids": {
            "properties": {
              "application_ids": {
                "properties": {
                  "application_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "profile_id": {
                "description": "Profile ID.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "mac_state": {
            "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
            "properties": {
              "current_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "desired_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "device_class": {
                "default": "CLASS_A",
                "enum": [
                  "CLASS_A",
                  "CLASS_B",
                  "CLASS_C"
                ],
                "type": "string"
              },
              "last_adr_change_f_cnt_up": {
                "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
                "format": "int64",
                "type": "integer"
              },
              "last_confirmed_downlink_at": {
                "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_dev_status_f_cnt_up": {
                "description": "Frame counter value of last uplink containing DevStatusAns.",
                "format": "int64",
                "type": "integer"
              },
              "last_downlink_at": {
                "description": "Time when the last downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_network_initiated_downlink_at": {
                "description": "Time when the last network-initiated downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "lorawan_version": {
                "default": "MAC_UNKNOWN",
                "enum": [
                  "MAC_UNKNOWN",
                  "MAC_V1_0",
                  "MAC_V1_0_1",
                  "MAC_V1_0_2",
                  "MAC_V1_1",
                  "MAC_V1_0_3",
                  "MAC_V1_0_4"
                ],
                "type": "string"
              },
              "pending_application_downlink": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "pending_join_request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_relay_downlink": {
                "properties": {
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_requests": {
                "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "ping_slot_periodicity": {
                "properties": {
                  "value": {
                    "default": "PING_EVERY_1S",
                    "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                    "enum": [
                      "PING_EVERY_1S",
                      "PING_EVERY_2S",
                      "PING_EVERY_4S",
                      "PING_EVERY_8S",
                      "PING_EVERY_16S",
                      "PING_EVERY_32S",
                      "PING_EVERY_64S",
                      "PING_EVERY_128S"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "queued_join_accept": {
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dev_addr": {
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "keys": {
                    "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                    "properties": {
                      "app_s_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "f_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "nwk_s_enc_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "s_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "session_key_id": {
                        "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "net_id": {
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "payload": {
                    "description": "Payload of the join-accept received from Join Server.",
                    "format": "byte",
                    "type": "string"
                  },
                  "request": {
                    "properties": {
                      "cf_list": {
                        "properties": {
                          "ch_masks": {
                            "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                            "items": {
                              "type": "boolean"
                            },
                            "type": "array"
                          },
                          "freq": {
                            "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                            "items": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "type": "array"
                          },
                          "type": {
                            "default": "FREQUENCIES",
                            "enum": [
                              "FREQUENCIES",
                              "CHANNEL_MASKS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "downlink_settings": {
                        "properties": {
                          "opt_neg": {
                            "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                            "type": "boolean"
                          },
                          "rx1_dr_offset": {
                            "default": "DATA_RATE_OFFSET_0",
                            "enum": [
                              "DATA_RATE_OFFSET_0",
                              "DATA_RATE_OFFSET_1",
                              "DATA_RATE_OFFSET_2",
                              "DATA_RATE_OFFSET_3",
                              "DATA_RATE_OFFSET_4",
                              "DATA_RATE_OFFSET_5",
                              "DATA_RATE_OFFSET_6",
                              "DATA_RATE_OFFSET_7"
                            ],
                            "type": "string"
                          },
                          "rx2_dr": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "rx_delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "queued_responses": {
                "description": "Queued MAC responses.\nRegenerated on each uplink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_downlinks": {
                "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "payload": {
                      "properties": {
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "full_f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_mac_command_identifiers": {
                "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
                "items": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "type": "array"
              },
              "recent_uplinks": {
                "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "device_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "payload": {
                      "properties": {
                        "join_accept_payload": {
                          "properties": {
                            "cf_list": {
                              "properties": {
                                "ch_masks": {
                                  "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                  "items": {
                                    "type": "boolean"
                                  },
                                  "type": "array"
                                },
                                "freq": {
                                  "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                  "items": {
                                    "format": "int64",
                                    "type": "integer"
                                  },
                                  "type": "array"
                                },
                                "type": {
                                  "default": "FREQUENCIES",
                                  "enum": [
                                    "FREQUENCIES",
                                    "CHANNEL_MASKS"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dl_settings": {
                              "properties": {
                                "opt_neg": {
                                  "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                  "type": "boolean"
                                },
                                "rx1_dr_offset": {
                                  "default": "DATA_RATE_OFFSET_0",
                                  "enum": [
                                    "DATA_RATE_OFFSET_0",
                                    "DATA_RATE_OFFSET_1",
                                    "DATA_RATE_OFFSET_2",
                                    "DATA_RATE_OFFSET_3",
                                    "DATA_RATE_OFFSET_4",
                                    "DATA_RATE_OFFSET_5",
                                    "DATA_RATE_OFFSET_6",
                                    "DATA_RATE_OFFSET_7"
                                  ],
                                  "type": "string"
                                },
                                "rx2_dr": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "encrypted": {
                              "format": "byte",
                              "type": "string"
                            },
                            "join_nonce": {
                              "example": "ABCDEF",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rx_delay": {
                              "default": "RX_DELAY_0",
                              "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                              "enum": [
                                "RX_DELAY_0",
                                "RX_DELAY_1",
                                "RX_DELAY_2",
                                "RX_DELAY_3",
                                "RX_DELAY_4",
                                "RX_DELAY_5",
                                "RX_DELAY_6",
                                "RX_DELAY_7",
                                "RX_DELAY_8",
                                "RX_DELAY_9",
                                "RX_DELAY_10",
                                "RX_DELAY_11",
                                "RX_DELAY_12",
                                "RX_DELAY_13",
                                "RX_DELAY_14",
                                "RX_DELAY_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dev_nonce": {
                              "example": "ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            },
                            "major": {
                              "default": "LORAWAN_R1",
                              "enum": [
                                "LORAWAN_R1"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "decoded_payload": {
                              "type": "object"
                            },
                            "f_hdr": {
                              "properties": {
                                "dev_addr": {
                                  "example": "2600ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "f_cnt": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "f_ctrl": {
                                  "properties": {
                                    "ack": {
                                      "type": "boolean"
                                    },
                                    "adr": {
                                      "type": "boolean"
                                    },
                                    "adr_ack_req": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "class_b": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "f_pending": {
                                      "description": "Only on downlink.",
                                      "type": "boolean"
                                    }
                                  },
                                  "type": "object"
                                },
                                "f_opts": {
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "frm_payload": {
                              "format": "byte",
                              "type": "string"
                            },
                            "full_f_cnt": {
                              "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "mic": {
                          "format": "byte",
                          "type": "string"
                        },
                        "rejoin_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rejoin_cnt": {
                              "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "rejoin_type": {
                              "default": "CONTEXT",
                              "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                              "enum": [
                                "CONTEXT",
                                "SESSION",
                                "KEYS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "title": "Message represents a LoRaWAN message",
                      "type": "object"
                    },
                    "received_at": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "rx_metadata": {
                      "items": {
                        "properties": {
                          "channel_rssi": {
                            "format": "float",
                            "type": "number"
                          },
                          "downlink_path_constraint": {
                            "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                            "enum": [
                              "DOWNLINK_PATH_CONSTRAINT_NONE",
                              "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                              "DOWNLINK_PATH_CONSTRAINT_NEVER"
                            ],
                            "type": "string"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "packet_broker": {
                            "type": "object"
                          },
                          "relay": {
                            "type": "object"
                          },
                          "snr": {
                            "format": "float",
                            "type": "number"
                          },
                          "uplink_token": {
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "settings": {
                      "properties": {
                        "data_rate": {
                          "properties": {
                            "fsk": {
                              "properties": {
                                "bit_rate": {
                                  "description": "Bit rate (bps).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lora": {
                              "properties": {
                                "bandwidth": {
                                  "description": "Bandwidth (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "coding_rate": {
                                  "type": "string"
                                },
                                "spreading_factor": {
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lrfhss": {
                              "properties": {
                                "coding_rate": {
                                  "type": "string"
                                },
                                "modulation_type": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "operating_channel_width": {
                                  "description": "Operating Channel Width (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "rejected_adr_data_rate_indexes": {
                "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
                "items": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "rejected_adr_tx_power_indexes": {
                "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "rejected_data_rate_ranges": {
                "additionalProperties": {
                  "properties": {
                    "ranges": {
                      "items": {
                        "properties": {
                          "max_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "min_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "description": "Data rate ranges rejected by the device per frequency.",
                "type": "object"
              },
              "rejected_frequencies": {
                "description": "Frequencies rejected by the device.",
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "rx_windows_available": {
                "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "max_frequency": {
            "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "format": "uint64",
            "type": "string"
          },
          "min_frequency": {
            "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "format": "uint64",
            "type": "string"
          },
          "multicast": {
            "description": "Indicates whether this device represents a multicast group.",
            "type": "boolean"
          },
          "name": {
            "description": "Friendly name of the device. Stored in Entity Registry.",
            "type": "string"
          },
          "net_id": {
            "description": "Home NetID. Stored in Join Server.",
            "example": "000013",
            "format": "string",
            "type": "string"
          },
          "network_server_address": {
            "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
            "type": "string"
          },
          "network_server_kek_label": {
            "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
            "type": "string"
          },
          "pending_mac_state": {
            "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
            "properties": {
              "current_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "desired_parameters": {
                "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
                "properties": {
                  "adr_ack_delay": {
                    "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_delay_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_ack_limit": {
                    "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_ack_limit_exponent": {
                    "properties": {
                      "value": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "adr_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "adr_nb_trans": {
                    "description": "ADR: number of retransmissions.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "adr_tx_power_index": {
                    "description": "ADR: transmission power index to use.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "beacon_frequency": {
                    "description": "Frequency of the class B beacon (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "channels": {
                    "description": "Configured uplink channels and optionally Rx1 frequency.",
                    "items": {
                      "properties": {
                        "downlink_frequency": {
                          "description": "Downlink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "enable_uplink": {
                          "description": "Channel can be used by device for uplink.",
                          "type": "boolean"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "uplink_frequency": {
                          "description": "Uplink frequency of the channel (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "downlink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "max_duty_cycle": {
                    "default": "DUTY_CYCLE_1",
                    "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                    "enum": [
                      "DUTY_CYCLE_1",
                      "DUTY_CYCLE_2",
                      "DUTY_CYCLE_4",
                      "DUTY_CYCLE_8",
                      "DUTY_CYCLE_16",
                      "DUTY_CYCLE_32",
                      "DUTY_CYCLE_64",
                      "DUTY_CYCLE_128",
                      "DUTY_CYCLE_256",
                      "DUTY_CYCLE_512",
                      "DUTY_CYCLE_1024",
                      "DUTY_CYCLE_2048",
                      "DUTY_CYCLE_4096",
                      "DUTY_CYCLE_8192",
                      "DUTY_CYCLE_16384",
                      "DUTY_CYCLE_32768"
                    ],
                    "type": "string"
                  },
                  "max_eirp": {
                    "description": "Maximum EIRP (dBm).",
                    "format": "float",
                    "type": "number"
                  },
                  "ping_slot_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "ping_slot_data_rate_index_value": {
                    "properties": {
                      "value": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_frequency": {
                    "description": "Frequency of the class B ping slot (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "rejoin_count_periodicity": {
                    "default": "REJOIN_COUNT_16",
                    "enum": [
                      "REJOIN_COUNT_16",
                      "REJOIN_COUNT_32",
                      "REJOIN_COUNT_64",
                      "REJOIN_COUNT_128",
                      "REJOIN_COUNT_256",
                      "REJOIN_COUNT_512",
                      "REJOIN_COUNT_1024",
                      "REJOIN_COUNT_2048",
                      "REJOIN_COUNT_4096",
                      "REJOIN_COUNT_8192",
                      "REJOIN_COUNT_16384",
                      "REJOIN_COUNT_32768",
                      "REJOIN_COUNT_65536",
                      "REJOIN_COUNT_131072",
                      "REJOIN_COUNT_262144",
                      "REJOIN_COUNT_524288"
                    ],
                    "type": "string"
                  },
                  "rejoin_time_periodicity": {
                    "default": "REJOIN_TIME_0",
                    "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                    "enum": [
                      "REJOIN_TIME_0",
                      "REJOIN_TIME_1",
                      "REJOIN_TIME_2",
                      "REJOIN_TIME_3",
                      "REJOIN_TIME_4",
                      "REJOIN_TIME_5",
                      "REJOIN_TIME_6",
                      "REJOIN_TIME_7",
                      "REJOIN_TIME_8",
                      "REJOIN_TIME_9",
                      "REJOIN_TIME_10",
                      "REJOIN_TIME_11",
                      "REJOIN_TIME_12",
                      "REJOIN_TIME_13",
                      "REJOIN_TIME_14",
                      "REJOIN_TIME_15"
                    ],
                    "type": "string"
                  },
                  "relay": {
                    "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                    "properties": {
                      "served": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "description": "End device identifier of the serving end device.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "serving": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "description": "Index of the default wake on radio channel.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "join_requests": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "notifications": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "overall": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "reset_behavior": {
                                "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "enum": [
                                  "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                  "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                  "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                  "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                                ],
                                "type": "string"
                              },
                              "uplink_messages": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "uplink_forwarding_rules": {
                            "description": "Configured uplink forwarding rules.",
                            "items": {
                              "properties": {
                                "device_id": {
                                  "description": "End device identifier of the served end device.",
                                  "type": "string"
                                },
                                "last_w_f_cnt": {
                                  "description": "Last wake on radio frame counter used by the served end device.",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "limits": {
                                  "properties": {
                                    "bucket_size": {
                                      "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "enum": [
                                        "RELAY_LIMIT_BUCKET_SIZE_1",
                                        "RELAY_LIMIT_BUCKET_SIZE_2",
                                        "RELAY_LIMIT_BUCKET_SIZE_4",
                                        "RELAY_LIMIT_BUCKET_SIZE_12"
                                      ],
                                      "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                      "type": "string"
                                    },
                                    "reload_rate": {
                                      "description": "The number of tokens which are replenished in the bucket every hour.",
                                      "format": "int64",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                },
                                "session_key_id": {
                                  "description": "Session key ID of the session keys used to derive the root relay session key.",
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "rx1_data_rate_offset": {
                    "default": "DATA_RATE_OFFSET_0",
                    "enum": [
                      "DATA_RATE_OFFSET_0",
                      "DATA_RATE_OFFSET_1",
                      "DATA_RATE_OFFSET_2",
                      "DATA_RATE_OFFSET_3",
                      "DATA_RATE_OFFSET_4",
                      "DATA_RATE_OFFSET_5",
                      "DATA_RATE_OFFSET_6",
                      "DATA_RATE_OFFSET_7"
                    ],
                    "type": "string"
                  },
                  "rx1_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  },
                  "rx2_data_rate_index": {
                    "default": "DATA_RATE_0",
                    "enum": [
                      "DATA_RATE_0",
                      "DATA_RATE_1",
                      "DATA_RATE_2",
                      "DATA_RATE_3",
                      "DATA_RATE_4",
                      "DATA_RATE_5",
                      "DATA_RATE_6",
                      "DATA_RATE_7",
                      "DATA_RATE_8",
                      "DATA_RATE_9",
                      "DATA_RATE_10",
                      "DATA_RATE_11",
                      "DATA_RATE_12",
                      "DATA_RATE_13",
                      "DATA_RATE_14",
                      "DATA_RATE_15"
                    ],
                    "type": "string"
                  },
                  "rx2_frequency": {
                    "description": "Frequency for Rx2 (Hz).",
                    "format": "uint64",
                    "type": "string"
                  },
                  "uplink_dwell_time": {
                    "properties": {
                      "value": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "device_class": {
                "default": "CLASS_A",
                "enum": [
                  "CLASS_A",
                  "CLASS_B",
                  "CLASS_C"
                ],
                "type": "string"
              },
              "last_adr_change_f_cnt_up": {
                "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
                "format": "int64",
                "type": "integer"
              },
              "last_confirmed_downlink_at": {
                "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_dev_status_f_cnt_up": {
                "description": "Frame counter value of last uplink containing DevStatusAns.",
                "format": "int64",
                "type": "integer"
              },
              "last_downlink_at": {
                "description": "Time when the last downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "last_network_initiated_downlink_at": {
                "description": "Time when the last network-initiated downlink message was scheduled.",
                "format": "date-time",
                "type": "string"
              },
              "lorawan_version": {
                "default": "MAC_UNKNOWN",
                "enum": [
                  "MAC_UNKNOWN",
                  "MAC_V1_0",
                  "MAC_V1_0_1",
                  "MAC_V1_0_2",
                  "MAC_V1_1",
                  "MAC_V1_0_3",
                  "MAC_V1_0_4"
                ],
                "type": "string"
              },
              "pending_application_downlink": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "pending_join_request": {
                "properties": {
                  "cf_list": {
                    "properties": {
                      "ch_masks": {
                        "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "freq": {
                        "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                        "items": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "type": "array"
                      },
                      "type": {
                        "default": "FREQUENCIES",
                        "enum": [
                          "FREQUENCIES",
                          "CHANNEL_MASKS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "downlink_settings": {
                    "properties": {
                      "opt_neg": {
                        "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                        "type": "boolean"
                      },
                      "rx1_dr_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_dr": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_delay": {
                    "default": "RX_DELAY_0",
                    "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                    "enum": [
                      "RX_DELAY_0",
                      "RX_DELAY_1",
                      "RX_DELAY_2",
                      "RX_DELAY_3",
                      "RX_DELAY_4",
                      "RX_DELAY_5",
                      "RX_DELAY_6",
                      "RX_DELAY_7",
                      "RX_DELAY_8",
                      "RX_DELAY_9",
                      "RX_DELAY_10",
                      "RX_DELAY_11",
                      "RX_DELAY_12",
                      "RX_DELAY_13",
                      "RX_DELAY_14",
                      "RX_DELAY_15"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_relay_downlink": {
                "properties": {
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "pending_requests": {
                "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "ping_slot_periodicity": {
                "properties": {
                  "value": {
                    "default": "PING_EVERY_1S",
                    "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                    "enum": [
                      "PING_EVERY_1S",
                      "PING_EVERY_2S",
                      "PING_EVERY_4S",
                      "PING_EVERY_8S",
                      "PING_EVERY_16S",
                      "PING_EVERY_32S",
                      "PING_EVERY_64S",
                      "PING_EVERY_128S"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "queued_join_accept": {
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "dev_addr": {
                    "example": "2600ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "keys": {
                    "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                    "properties": {
                      "app_s_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "f_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "nwk_s_enc_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "s_nwk_s_int_key": {
                        "properties": {
                          "encrypted_key": {
                            "format": "byte",
                            "type": "string"
                          },
                          "kek_label": {
                            "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                            "type": "string"
                          },
                          "key": {
                            "description": "The unencrypted AES key.",
                            "example": "0123456789ABCDEF0123456789ABCDEF",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "session_key_id": {
                        "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                        "format": "byte",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "net_id": {
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "payload": {
                    "description": "Payload of the join-accept received from Join Server.",
                    "format": "byte",
                    "type": "string"
                  },
                  "request": {
                    "properties": {
                      "cf_list": {
                        "properties": {
                          "ch_masks": {
                            "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                            "items": {
                              "type": "boolean"
                            },
                            "type": "array"
                          },
                          "freq": {
                            "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                            "items": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "type": "array"
                          },
                          "type": {
                            "default": "FREQUENCIES",
                            "enum": [
                              "FREQUENCIES",
                              "CHANNEL_MASKS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "downlink_settings": {
                        "properties": {
                          "opt_neg": {
                            "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                            "type": "boolean"
                          },
                          "rx1_dr_offset": {
                            "default": "DATA_RATE_OFFSET_0",
                            "enum": [
                              "DATA_RATE_OFFSET_0",
                              "DATA_RATE_OFFSET_1",
                              "DATA_RATE_OFFSET_2",
                              "DATA_RATE_OFFSET_3",
                              "DATA_RATE_OFFSET_4",
                              "DATA_RATE_OFFSET_5",
                              "DATA_RATE_OFFSET_6",
                              "DATA_RATE_OFFSET_7"
                            ],
                            "type": "string"
                          },
                          "rx2_dr": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "rx_delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "queued_responses": {
                "description": "Queued MAC responses.\nRegenerated on each uplink.",
                "items": {
                  "properties": {
                    "adr_param_setup_req": {
                      "properties": {
                        "adr_ack_delay_exponent": {
                          "default": "ADR_ACK_DELAY_1",
                          "enum": [
                            "ADR_ACK_DELAY_1",
                            "ADR_ACK_DELAY_2",
                            "ADR_ACK_DELAY_4",
                            "ADR_ACK_DELAY_8",
                            "ADR_ACK_DELAY_16",
                            "ADR_ACK_DELAY_32",
                            "ADR_ACK_DELAY_64",
                            "ADR_ACK_DELAY_128",
                            "ADR_ACK_DELAY_256",
                            "ADR_ACK_DELAY_512",
                            "ADR_ACK_DELAY_1024",
                            "ADR_ACK_DELAY_2048",
                            "ADR_ACK_DELAY_4096",
                            "ADR_ACK_DELAY_8192",
                            "ADR_ACK_DELAY_16384",
                            "ADR_ACK_DELAY_32768"
                          ],
                          "type": "string"
                        },
                        "adr_ack_limit_exponent": {
                          "default": "ADR_ACK_LIMIT_1",
                          "enum": [
                            "ADR_ACK_LIMIT_1",
                            "ADR_ACK_LIMIT_2",
                            "ADR_ACK_LIMIT_4",
                            "ADR_ACK_LIMIT_8",
                            "ADR_ACK_LIMIT_16",
                            "ADR_ACK_LIMIT_32",
                            "ADR_ACK_LIMIT_64",
                            "ADR_ACK_LIMIT_128",
                            "ADR_ACK_LIMIT_256",
                            "ADR_ACK_LIMIT_512",
                            "ADR_ACK_LIMIT_1024",
                            "ADR_ACK_LIMIT_2048",
                            "ADR_ACK_LIMIT_4096",
                            "ADR_ACK_LIMIT_8192",
                            "ADR_ACK_LIMIT_16384",
                            "ADR_ACK_LIMIT_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_ans": {
                      "properties": {
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_freq_req": {
                      "properties": {
                        "frequency": {
                          "description": "Frequency of the Class B beacons (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "beacon_timing_ans": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "delay": {
                          "description": "(uint16) See LoRaWAN specification.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "cid": {
                      "default": "CID_RFU_0",
                      "enum": [
                        "CID_RFU_0",
                        "CID_RESET",
                        "CID_LINK_CHECK",
                        "CID_LINK_ADR",
                        "CID_DUTY_CYCLE",
                        "CID_RX_PARAM_SETUP",
                        "CID_DEV_STATUS",
                        "CID_NEW_CHANNEL",
                        "CID_RX_TIMING_SETUP",
                        "CID_TX_PARAM_SETUP",
                        "CID_DL_CHANNEL",
                        "CID_REKEY",
                        "CID_ADR_PARAM_SETUP",
                        "CID_DEVICE_TIME",
                        "CID_FORCE_REJOIN",
                        "CID_REJOIN_PARAM_SETUP",
                        "CID_PING_SLOT_INFO",
                        "CID_PING_SLOT_CHANNEL",
                        "CID_BEACON_TIMING",
                        "CID_BEACON_FREQ",
                        "CID_DEVICE_MODE",
                        "CID_RELAY_CONF",
                        "CID_RELAY_END_DEVICE_CONF",
                        "CID_RELAY_FILTER_LIST",
                        "CID_RELAY_UPDATE_UPLINK_LIST",
                        "CID_RELAY_CTRL_UPLINK_LIST",
                        "CID_RELAY_CONFIGURE_FWD_LIMIT",
                        "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                      ],
                      "title": "- CID_BEACON_TIMING: Deprecated",
                      "type": "string"
                    },
                    "dev_status_ans": {
                      "properties": {
                        "battery": {
                          "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "SNR of the last downlink (dB; [-32, +31]).",
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_conf": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_mode_ind": {
                      "properties": {
                        "class": {
                          "default": "CLASS_A",
                          "enum": [
                            "CLASS_A",
                            "CLASS_B",
                            "CLASS_C"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "device_time_ans": {
                      "properties": {
                        "time": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_ans": {
                      "properties": {
                        "channel_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "dl_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Downlink channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "duty_cycle_req": {
                      "properties": {
                        "max_duty_cycle": {
                          "default": "DUTY_CYCLE_1",
                          "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                          "enum": [
                            "DUTY_CYCLE_1",
                            "DUTY_CYCLE_2",
                            "DUTY_CYCLE_4",
                            "DUTY_CYCLE_8",
                            "DUTY_CYCLE_16",
                            "DUTY_CYCLE_32",
                            "DUTY_CYCLE_64",
                            "DUTY_CYCLE_128",
                            "DUTY_CYCLE_256",
                            "DUTY_CYCLE_512",
                            "DUTY_CYCLE_1024",
                            "DUTY_CYCLE_2048",
                            "DUTY_CYCLE_4096",
                            "DUTY_CYCLE_8192",
                            "DUTY_CYCLE_16384",
                            "DUTY_CYCLE_32768"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "force_rejoin_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "max_retries": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "period_exponent": {
                          "default": "REJOIN_PERIOD_0",
                          "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                          "enum": [
                            "REJOIN_PERIOD_0",
                            "REJOIN_PERIOD_1",
                            "REJOIN_PERIOD_2",
                            "REJOIN_PERIOD_3",
                            "REJOIN_PERIOD_4",
                            "REJOIN_PERIOD_5",
                            "REJOIN_PERIOD_6",
                            "REJOIN_PERIOD_7"
                          ],
                          "type": "string"
                        },
                        "rejoin_type": {
                          "default": "CONTEXT",
                          "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                          "enum": [
                            "CONTEXT",
                            "SESSION",
                            "KEYS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_ans": {
                      "properties": {
                        "channel_mask_ack": {
                          "type": "boolean"
                        },
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "tx_power_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "link_adr_req": {
                      "properties": {
                        "channel_mask": {
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "channel_mask_control": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "nb_trans": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "tx_power_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "link_check_ans": {
                      "properties": {
                        "gateway_count": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "margin": {
                          "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_ans": {
                      "properties": {
                        "data_rate_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "new_channel_req": {
                      "properties": {
                        "channel_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "frequency": {
                          "description": "Channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        },
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_ans": {
                      "properties": {
                        "data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_channel_req": {
                      "properties": {
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "Ping slot channel frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "ping_slot_info_req": {
                      "properties": {
                        "period": {
                          "default": "PING_EVERY_1S",
                          "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                          "enum": [
                            "PING_EVERY_1S",
                            "PING_EVERY_2S",
                            "PING_EVERY_4S",
                            "PING_EVERY_8S",
                            "PING_EVERY_16S",
                            "PING_EVERY_32S",
                            "PING_EVERY_64S",
                            "PING_EVERY_128S"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "raw_payload": {
                      "format": "byte",
                      "type": "string"
                    },
                    "rejoin_param_setup_ans": {
                      "properties": {
                        "max_time_exponent_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rejoin_param_setup_req": {
                      "properties": {
                        "max_count_exponent": {
                          "default": "REJOIN_COUNT_16",
                          "enum": [
                            "REJOIN_COUNT_16",
                            "REJOIN_COUNT_32",
                            "REJOIN_COUNT_64",
                            "REJOIN_COUNT_128",
                            "REJOIN_COUNT_256",
                            "REJOIN_COUNT_512",
                            "REJOIN_COUNT_1024",
                            "REJOIN_COUNT_2048",
                            "REJOIN_COUNT_4096",
                            "REJOIN_COUNT_8192",
                            "REJOIN_COUNT_16384",
                            "REJOIN_COUNT_32768",
                            "REJOIN_COUNT_65536",
                            "REJOIN_COUNT_131072",
                            "REJOIN_COUNT_262144",
                            "REJOIN_COUNT_524288"
                          ],
                          "type": "string"
                        },
                        "max_time_exponent": {
                          "default": "REJOIN_TIME_0",
                          "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                          "enum": [
                            "REJOIN_TIME_0",
                            "REJOIN_TIME_1",
                            "REJOIN_TIME_2",
                            "REJOIN_TIME_3",
                            "REJOIN_TIME_4",
                            "REJOIN_TIME_5",
                            "REJOIN_TIME_6",
                            "REJOIN_TIME_7",
                            "REJOIN_TIME_8",
                            "REJOIN_TIME_9",
                            "REJOIN_TIME_10",
                            "REJOIN_TIME_11",
                            "REJOIN_TIME_12",
                            "REJOIN_TIME_13",
                            "REJOIN_TIME_14",
                            "REJOIN_TIME_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rekey_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_ans": {
                      "properties": {
                        "cad_periodicity_ack": {
                          "type": "boolean"
                        },
                        "default_channel_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_ack_offset_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "cad_periodicity": {
                              "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                              "enum": [
                                "RELAY_CAD_PERIODICITY_1_SECOND",
                                "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                                "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                              ],
                              "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                              "type": "string"
                            },
                            "default_channel_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_ans": {
                      "type": "object"
                    },
                    "relay_configure_fwd_limit_req": {
                      "properties": {
                        "global_uplink_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notify_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_limit_counter": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_ans": {
                      "properties": {
                        "rule_index_ack": {
                          "type": "boolean"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_ctrl_uplink_list_req": {
                      "properties": {
                        "action": {
                          "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "enum": [
                            "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                            "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                          ],
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_ans": {
                      "properties": {
                        "backoff_ack": {
                          "type": "boolean"
                        },
                        "second_channel_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "second_channel_frequency_ack": {
                          "type": "boolean"
                        },
                        "second_channel_index_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "relay_end_device_conf_req": {
                      "properties": {
                        "configuration": {
                          "properties": {
                            "always": {
                              "type": "object"
                            },
                            "backoff": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "dynamic": {
                              "properties": {
                                "smart_enable_level": {
                                  "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                  "enum": [
                                    "RELAY_SMART_ENABLE_LEVEL_8",
                                    "RELAY_SMART_ENABLE_LEVEL_16",
                                    "RELAY_SMART_ENABLE_LEVEL_32",
                                    "RELAY_SMART_ENABLE_LEVEL_64"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "end_device_controlled": {
                              "type": "object"
                            },
                            "second_channel": {
                              "properties": {
                                "ack_offset": {
                                  "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "enum": [
                                    "RELAY_SECOND_CH_ACK_OFFSET_0",
                                    "RELAY_SECOND_CH_ACK_OFFSET_200",
                                    "RELAY_SECOND_CH_ACK_OFFSET_400",
                                    "RELAY_SECOND_CH_ACK_OFFSET_800",
                                    "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                    "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                  ],
                                  "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                  "type": "string"
                                },
                                "data_rate_index": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                },
                                "frequency": {
                                  "description": "The frequency (Hz) used by the wake on radio message.",
                                  "format": "uint64",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "serving_device_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "relay_notify_new_end_device_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "rssi": {
                          "format": "int32",
                          "type": "integer"
                        },
                        "snr": {
                          "format": "int32",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "relay_update_uplink_list_ans": {
                      "type": "object"
                    },
                    "relay_update_uplink_list_req": {
                      "properties": {
                        "dev_addr": {
                          "example": "2600ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "device_id": {
                          "type": "string"
                        },
                        "forward_limits": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "root_wor_s_key": {
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        },
                        "rule_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "session_key_id": {
                          "format": "byte",
                          "type": "string"
                        },
                        "w_f_cnt": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "reset_conf": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "reset_ind": {
                      "properties": {
                        "minor_version": {
                          "default": "MINOR_RFU_0",
                          "enum": [
                            "MINOR_RFU_0",
                            "MINOR_1",
                            "MINOR_RFU_2",
                            "MINOR_RFU_3",
                            "MINOR_RFU_4",
                            "MINOR_RFU_5",
                            "MINOR_RFU_6",
                            "MINOR_RFU_7",
                            "MINOR_RFU_8",
                            "MINOR_RFU_9",
                            "MINOR_RFU_10",
                            "MINOR_RFU_11",
                            "MINOR_RFU_12",
                            "MINOR_RFU_13",
                            "MINOR_RFU_14",
                            "MINOR_RFU_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_ans": {
                      "properties": {
                        "rx1_data_rate_offset_ack": {
                          "type": "boolean"
                        },
                        "rx2_data_rate_index_ack": {
                          "type": "boolean"
                        },
                        "rx2_frequency_ack": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    },
                    "rx_param_setup_req": {
                      "properties": {
                        "rx1_data_rate_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "rx2_frequency": {
                          "description": "Rx2 frequency (Hz).",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_timing_setup_req": {
                      "properties": {
                        "delay": {
                          "default": "RX_DELAY_0",
                          "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                          "enum": [
                            "RX_DELAY_0",
                            "RX_DELAY_1",
                            "RX_DELAY_2",
                            "RX_DELAY_3",
                            "RX_DELAY_4",
                            "RX_DELAY_5",
                            "RX_DELAY_6",
                            "RX_DELAY_7",
                            "RX_DELAY_8",
                            "RX_DELAY_9",
                            "RX_DELAY_10",
                            "RX_DELAY_11",
                            "RX_DELAY_12",
                            "RX_DELAY_13",
                            "RX_DELAY_14",
                            "RX_DELAY_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tx_param_setup_req": {
                      "properties": {
                        "downlink_dwell_time": {
                          "type": "boolean"
                        },
                        "max_eirp_index": {
                          "default": "DEVICE_EIRP_8",
                          "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                          "enum": [
                            "DEVICE_EIRP_8",
                            "DEVICE_EIRP_10",
                            "DEVICE_EIRP_12",
                            "DEVICE_EIRP_13",
                            "DEVICE_EIRP_14",
                            "DEVICE_EIRP_16",
                            "DEVICE_EIRP_18",
                            "DEVICE_EIRP_20",
                            "DEVICE_EIRP_21",
                            "DEVICE_EIRP_24",
                            "DEVICE_EIRP_26",
                            "DEVICE_EIRP_27",
                            "DEVICE_EIRP_29",
                            "DEVICE_EIRP_30",
                            "DEVICE_EIRP_33",
                            "DEVICE_EIRP_36"
                          ],
                          "type": "string"
                        },
                        "uplink_dwell_time": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_downlinks": {
                "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "payload": {
                      "properties": {
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "full_f_cnt": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "recent_mac_command_identifiers": {
                "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
                "items": {
                  "default": "CID_RFU_0",
                  "enum": [
                    "CID_RFU_0",
                    "CID_RESET",
                    "CID_LINK_CHECK",
                    "CID_LINK_ADR",
                    "CID_DUTY_CYCLE",
                    "CID_RX_PARAM_SETUP",
                    "CID_DEV_STATUS",
                    "CID_NEW_CHANNEL",
                    "CID_RX_TIMING_SETUP",
                    "CID_TX_PARAM_SETUP",
                    "CID_DL_CHANNEL",
                    "CID_REKEY",
                    "CID_ADR_PARAM_SETUP",
                    "CID_DEVICE_TIME",
                    "CID_FORCE_REJOIN",
                    "CID_REJOIN_PARAM_SETUP",
                    "CID_PING_SLOT_INFO",
                    "CID_PING_SLOT_CHANNEL",
                    "CID_BEACON_TIMING",
                    "CID_BEACON_FREQ",
                    "CID_DEVICE_MODE",
                    "CID_RELAY_CONF",
                    "CID_RELAY_END_DEVICE_CONF",
                    "CID_RELAY_FILTER_LIST",
                    "CID_RELAY_UPDATE_UPLINK_LIST",
                    "CID_RELAY_CTRL_UPLINK_LIST",
                    "CID_RELAY_CONFIGURE_FWD_LIMIT",
                    "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                  ],
                  "title": "- CID_BEACON_TIMING: Deprecated",
                  "type": "string"
                },
                "type": "array"
              },
              "recent_uplinks": {
                "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
                "items": {
                  "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                  "properties": {
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "device_channel_index": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "payload": {
                      "properties": {
                        "join_accept_payload": {
                          "properties": {
                            "cf_list": {
                              "properties": {
                                "ch_masks": {
                                  "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                  "items": {
                                    "type": "boolean"
                                  },
                                  "type": "array"
                                },
                                "freq": {
                                  "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                  "items": {
                                    "format": "int64",
                                    "type": "integer"
                                  },
                                  "type": "array"
                                },
                                "type": {
                                  "default": "FREQUENCIES",
                                  "enum": [
                                    "FREQUENCIES",
                                    "CHANNEL_MASKS"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "dev_addr": {
                              "example": "2600ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dl_settings": {
                              "properties": {
                                "opt_neg": {
                                  "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                  "type": "boolean"
                                },
                                "rx1_dr_offset": {
                                  "default": "DATA_RATE_OFFSET_0",
                                  "enum": [
                                    "DATA_RATE_OFFSET_0",
                                    "DATA_RATE_OFFSET_1",
                                    "DATA_RATE_OFFSET_2",
                                    "DATA_RATE_OFFSET_3",
                                    "DATA_RATE_OFFSET_4",
                                    "DATA_RATE_OFFSET_5",
                                    "DATA_RATE_OFFSET_6",
                                    "DATA_RATE_OFFSET_7"
                                  ],
                                  "type": "string"
                                },
                                "rx2_dr": {
                                  "default": "DATA_RATE_0",
                                  "enum": [
                                    "DATA_RATE_0",
                                    "DATA_RATE_1",
                                    "DATA_RATE_2",
                                    "DATA_RATE_3",
                                    "DATA_RATE_4",
                                    "DATA_RATE_5",
                                    "DATA_RATE_6",
                                    "DATA_RATE_7",
                                    "DATA_RATE_8",
                                    "DATA_RATE_9",
                                    "DATA_RATE_10",
                                    "DATA_RATE_11",
                                    "DATA_RATE_12",
                                    "DATA_RATE_13",
                                    "DATA_RATE_14",
                                    "DATA_RATE_15"
                                  ],
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "encrypted": {
                              "format": "byte",
                              "type": "string"
                            },
                            "join_nonce": {
                              "example": "ABCDEF",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rx_delay": {
                              "default": "RX_DELAY_0",
                              "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                              "enum": [
                                "RX_DELAY_0",
                                "RX_DELAY_1",
                                "RX_DELAY_2",
                                "RX_DELAY_3",
                                "RX_DELAY_4",
                                "RX_DELAY_5",
                                "RX_DELAY_6",
                                "RX_DELAY_7",
                                "RX_DELAY_8",
                                "RX_DELAY_9",
                                "RX_DELAY_10",
                                "RX_DELAY_11",
                                "RX_DELAY_12",
                                "RX_DELAY_13",
                                "RX_DELAY_14",
                                "RX_DELAY_15"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "join_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "dev_nonce": {
                              "example": "ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "m_hdr": {
                          "properties": {
                            "m_type": {
                              "default": "JOIN_REQUEST",
                              "enum": [
                                "JOIN_REQUEST",
                                "JOIN_ACCEPT",
                                "UNCONFIRMED_UP",
                                "UNCONFIRMED_DOWN",
                                "CONFIRMED_UP",
                                "CONFIRMED_DOWN",
                                "REJOIN_REQUEST",
                                "PROPRIETARY"
                              ],
                              "type": "string"
                            },
                            "major": {
                              "default": "LORAWAN_R1",
                              "enum": [
                                "LORAWAN_R1"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "mac_payload": {
                          "properties": {
                            "decoded_payload": {
                              "type": "object"
                            },
                            "f_hdr": {
                              "properties": {
                                "dev_addr": {
                                  "example": "2600ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "f_cnt": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "f_ctrl": {
                                  "properties": {
                                    "ack": {
                                      "type": "boolean"
                                    },
                                    "adr": {
                                      "type": "boolean"
                                    },
                                    "adr_ack_req": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "class_b": {
                                      "description": "Only on uplink.",
                                      "type": "boolean"
                                    },
                                    "f_pending": {
                                      "description": "Only on downlink.",
                                      "type": "boolean"
                                    }
                                  },
                                  "type": "object"
                                },
                                "f_opts": {
                                  "format": "byte",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "f_port": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "frm_payload": {
                              "format": "byte",
                              "type": "string"
                            },
                            "full_f_cnt": {
                              "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "mic": {
                          "format": "byte",
                          "type": "string"
                        },
                        "rejoin_request_payload": {
                          "properties": {
                            "dev_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "join_eui": {
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "net_id": {
                              "example": "000013",
                              "format": "string",
                              "type": "string"
                            },
                            "rejoin_cnt": {
                              "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "rejoin_type": {
                              "default": "CONTEXT",
                              "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                              "enum": [
                                "CONTEXT",
                                "SESSION",
                                "KEYS"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "title": "Message represents a LoRaWAN message",
                      "type": "object"
                    },
                    "received_at": {
                      "format": "date-time",
                      "type": "string"
                    },
                    "rx_metadata": {
                      "items": {
                        "properties": {
                          "channel_rssi": {
                            "format": "float",
                            "type": "number"
                          },
                          "downlink_path_constraint": {
                            "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                            "enum": [
                              "DOWNLINK_PATH_CONSTRAINT_NONE",
                              "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                              "DOWNLINK_PATH_CONSTRAINT_NEVER"
                            ],
                            "type": "string"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "packet_broker": {
                            "type": "object"
                          },
                          "relay": {
                            "type": "object"
                          },
                          "snr": {
                            "format": "float",
                            "type": "number"
                          },
                          "uplink_token": {
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "settings": {
                      "properties": {
                        "data_rate": {
                          "properties": {
                            "fsk": {
                              "properties": {
                                "bit_rate": {
                                  "description": "Bit rate (bps).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lora": {
                              "properties": {
                                "bandwidth": {
                                  "description": "Bandwidth (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "coding_rate": {
                                  "type": "string"
                                },
                                "spreading_factor": {
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "lrfhss": {
                              "properties": {
                                "coding_rate": {
                                  "type": "string"
                                },
                                "modulation_type": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "operating_channel_width": {
                                  "description": "Operating Channel Width (Hz).",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "rejected_adr_data_rate_indexes": {
                "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
                "items": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "rejected_adr_tx_power_indexes": {
                "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
                "items": {
                  "format": "int64",
                  "type": "integer"
                },
                "type": "array"
              },
              "rejected_data_rate_ranges": {
                "additionalProperties": {
                  "properties": {
                    "ranges": {
                      "items": {
                        "properties": {
                          "max_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          },
                          "min_data_rate_index": {
                            "default": "DATA_RATE_0",
                            "enum": [
                              "DATA_RATE_0",
                              "DATA_RATE_1",
                              "DATA_RATE_2",
                              "DATA_RATE_3",
                              "DATA_RATE_4",
                              "DATA_RATE_5",
                              "DATA_RATE_6",
                              "DATA_RATE_7",
                              "DATA_RATE_8",
                              "DATA_RATE_9",
                              "DATA_RATE_10",
                              "DATA_RATE_11",
                              "DATA_RATE_12",
                              "DATA_RATE_13",
                              "DATA_RATE_14",
                              "DATA_RATE_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "description": "Data rate ranges rejected by the device per frequency.",
                "type": "object"
              },
              "rejected_frequencies": {
                "description": "Frequencies rejected by the device.",
                "items": {
                  "format": "uint64",
                  "type": "string"
                },
                "type": "array"
              },
              "rx_windows_available": {
                "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "pending_session": {
            "properties": {
              "dev_addr": {
                "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "last_a_f_cnt_down": {
                "description": "Last application downlink frame counter value used. Application Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_conf_f_cnt_down": {
                "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_f_cnt_up": {
                "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
                "format": "int64",
                "type": "integer"
              },
              "last_n_f_cnt_down": {
                "description": "Last network downlink frame counter value used. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "queued_application_downlinks": {
                "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
                "items": {
                  "properties": {
                    "attributes": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Attributes for devices, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "class_b_c": {
                      "properties": {
                        "absolute_time": {
                          "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                          "format": "date-time",
                          "type": "string"
                        },
                        "gateways": {
                          "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                          "items": {
                            "properties": {
                              "antenna_index": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "gateway_ids": {
                                "properties": {
                                  "eui": {
                                    "description": "Secondary identifier, which can only be used in specific requests.",
                                    "example": "70B3D57ED000ABCD",
                                    "format": "string",
                                    "type": "string"
                                  },
                                  "gateway_id": {
                                    "type": "string"
                                  }
                                },
                                "type": "object"
                              },
                              "group_index": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    },
                    "confirmed": {
                      "type": "boolean"
                    },
                    "confirmed_retry": {
                      "properties": {
                        "attempt": {
                          "description": "The number of attempted confirmed downlink acknowledgements.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "max_attempts": {
                          "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "decoded_payload": {
                      "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                      "type": "object"
                    },
                    "decoded_payload_warnings": {
                      "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                      "format": "byte",
                      "type": "string"
                    },
                    "locations": {
                      "additionalProperties": {
                        "properties": {
                          "accuracy": {
                            "description": "The accuracy of the location (meters).",
                            "format": "int32",
                            "type": "integer"
                          },
                          "altitude": {
                            "description": "The altitude (meters), where 0 is the mean sea level.",
                            "format": "int32",
                            "type": "integer"
                          },
                          "latitude": {
                            "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "longitude": {
                            "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "source": {
                            "default": "SOURCE_UNKNOWN",
                            "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                            "enum": [
                              "SOURCE_UNKNOWN",
                              "SOURCE_GPS",
                              "SOURCE_REGISTRY",
                              "SOURCE_IP_GEOLOCATION",
                              "SOURCE_WIFI_RSSI_GEOLOCATION",
                              "SOURCE_BT_RSSI_GEOLOCATION",
                              "SOURCE_LORA_RSSI_GEOLOCATION",
                              "SOURCE_LORA_TDOA_GEOLOCATION",
                              "SOURCE_COMBINED_GEOLOCATION"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "description": "End device location metadata, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "network_ids": {
                      "description": "Identifies a Network Server.",
                      "properties": {
                        "cluster_address": {
                          "description": "Cluster address of the Network Server.",
                          "type": "string"
                        },
                        "cluster_id": {
                          "description": "Cluster identifier of the Network Server.",
                          "type": "string"
                        },
                        "net_id": {
                          "description": "LoRa Alliance NetID.",
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "ns_id": {
                          "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "tenant_address": {
                          "description": "Optional tenant address for multi-tenant deployments.",
                          "type": "string"
                        },
                        "tenant_id": {
                          "description": "Optional tenant identifier for multi-tenant deployments.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "priority": {
                      "default": "LOWEST",
                      "enum": [
                        "LOWEST",
                        "LOW",
                        "BELOW_NORMAL",
                        "NORMAL",
                        "ABOVE_NORMAL",
                        "HIGH",
                        "HIGHEST"
                      ],
                      "type": "string"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys used by this downlink.",
                      "format": "byte",
                      "type": "string"
                    },
                    "version_ids": {
                      "description": "Identifies an end device model with version information.",
                      "properties": {
                        "band_id": {
                          "type": "string"
                        },
                        "brand_id": {
                          "type": "string"
                        },
                        "firmware_version": {
                          "type": "string"
                        },
                        "hardware_version": {
                          "type": "string"
                        },
                        "model_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "started_at": {
                "description": "Time when the session started. Network Server only.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object"
          },
          "picture": {
            "properties": {
              "embedded": {
                "properties": {
                  "data": {
                    "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                    "format": "byte",
                    "type": "string"
                  },
                  "mime_type": {
                    "description": "MIME type of the picture.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "sizes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "URLs of the picture for different sizes, if available on a CDN.",
                "type": "object"
              }
            },
            "type": "object"
          },
          "power_state": {
            "default": "POWER_UNKNOWN",
            "description": "Power state of the device.",
            "enum": [
              "POWER_UNKNOWN",
              "POWER_BATTERY",
              "POWER_EXTERNAL"
            ],
            "type": "string"
          },
          "provisioner_id": {
            "description": "ID of the provisioner. Stored in Join Server.",
            "type": "string"
          },
          "provisioning_data": {
            "description": "Vendor-specific provisioning data. Stored in Join Server.",
            "type": "object"
          },
          "queued_application_downlinks": {
            "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
            "items": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "resets_join_nonces": {
            "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "root_keys": {
            "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
            "properties": {
              "app_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "nwk_key": {
                "properties": {
                  "encrypted_key": {
                    "format": "byte",
                    "type": "string"
                  },
                  "kek_label": {
                    "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                    "type": "string"
                  },
                  "key": {
                    "description": "The unencrypted AES key.",
                    "example": "0123456789ABCDEF0123456789ABCDEF",
                    "format": "string",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "root_key_id": {
                "description": "Join Server issued identifier for the root keys.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "serial_number": {
            "type": "string"
          },
          "service_profile_id": {
            "description": "Default service profile. Stored in Entity Registry.",
            "type": "string"
          },
          "session": {
            "properties": {
              "dev_addr": {
                "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
                "example": "2600ABCD",
                "format": "string",
                "type": "string"
              },
              "keys": {
                "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                "properties": {
                  "app_s_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "f_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "nwk_s_enc_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s_nwk_s_int_key": {
                    "properties": {
                      "encrypted_key": {
                        "format": "byte",
                        "type": "string"
                      },
                      "kek_label": {
                        "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                        "type": "string"
                      },
                      "key": {
                        "description": "The unencrypted AES key.",
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                    "format": "byte",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "last_a_f_cnt_down": {
                "description": "Last application downlink frame counter value used. Application Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_conf_f_cnt_down": {
                "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "last_f_cnt_up": {
                "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
                "format": "int64",
                "type": "integer"
              },
              "last_n_f_cnt_down": {
                "description": "Last network downlink frame counter value used. Network Server only.",
                "format": "int64",
                "type": "integer"
              },
              "queued_application_downlinks": {
                "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
                "items": {
                  "properties": {
                    "attributes": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Attributes for devices, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "class_b_c": {
                      "properties": {
                        "absolute_time": {
                          "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                          "format": "date-time",
                          "type": "string"
                        },
                        "gateways": {
                          "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                          "items": {
                            "properties": {
                              "antenna_index": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "gateway_ids": {
                                "properties": {
                                  "eui": {
                                    "description": "Secondary identifier, which can only be used in specific requests.",
                                    "example": "70B3D57ED000ABCD",
                                    "format": "string",
                                    "type": "string"
                                  },
                                  "gateway_id": {
                                    "type": "string"
                                  }
                                },
                                "type": "object"
                              },
                              "group_index": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    },
                    "confirmed": {
                      "type": "boolean"
                    },
                    "confirmed_retry": {
                      "properties": {
                        "attempt": {
                          "description": "The number of attempted confirmed downlink acknowledgements.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "max_attempts": {
                          "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "correlation_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "decoded_payload": {
                      "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                      "type": "object"
                    },
                    "decoded_payload_warnings": {
                      "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "f_cnt": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "f_port": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "frm_payload": {
                      "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                      "format": "byte",
                      "type": "string"
                    },
                    "locations": {
                      "additionalProperties": {
                        "properties": {
                          "accuracy": {
                            "description": "The accuracy of the location (meters).",
                            "format": "int32",
                            "type": "integer"
                          },
                          "altitude": {
                            "description": "The altitude (meters), where 0 is the mean sea level.",
                            "format": "int32",
                            "type": "integer"
                          },
                          "latitude": {
                            "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "longitude": {
                            "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                            "format": "double",
                            "type": "number"
                          },
                          "source": {
                            "default": "SOURCE_UNKNOWN",
                            "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                            "enum": [
                              "SOURCE_UNKNOWN",
                              "SOURCE_GPS",
                              "SOURCE_REGISTRY",
                              "SOURCE_IP_GEOLOCATION",
                              "SOURCE_WIFI_RSSI_GEOLOCATION",
                              "SOURCE_BT_RSSI_GEOLOCATION",
                              "SOURCE_LORA_RSSI_GEOLOCATION",
                              "SOURCE_LORA_TDOA_GEOLOCATION",
                              "SOURCE_COMBINED_GEOLOCATION"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "description": "End device location metadata, set by the Application Server while handling the message.",
                      "type": "object"
                    },
                    "network_ids": {
                      "description": "Identifies a Network Server.",
                      "properties": {
                        "cluster_address": {
                          "description": "Cluster address of the Network Server.",
                          "type": "string"
                        },
                        "cluster_id": {
                          "description": "Cluster identifier of the Network Server.",
                          "type": "string"
                        },
                        "net_id": {
                          "description": "LoRa Alliance NetID.",
                          "example": "000013",
                          "format": "string",
                          "type": "string"
                        },
                        "ns_id": {
                          "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                          "example": "70B3D57ED000ABCD",
                          "format": "string",
                          "type": "string"
                        },
                        "tenant_address": {
                          "description": "Optional tenant address for multi-tenant deployments.",
                          "type": "string"
                        },
                        "tenant_id": {
                          "description": "Optional tenant identifier for multi-tenant deployments.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "priority": {
                      "default": "LOWEST",
                      "enum": [
                        "LOWEST",
                        "LOW",
                        "BELOW_NORMAL",
                        "NORMAL",
                        "ABOVE_NORMAL",
                        "HIGH",
                        "HIGHEST"
                      ],
                      "type": "string"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys used by this downlink.",
                      "format": "byte",
                      "type": "string"
                    },
                    "version_ids": {
                      "description": "Identifies an end device model with version information.",
                      "properties": {
                        "band_id": {
                          "type": "string"
                        },
                        "brand_id": {
                          "type": "string"
                        },
                        "firmware_version": {
                          "type": "string"
                        },
                        "hardware_version": {
                          "type": "string"
                        },
                        "model_id": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "started_at": {
                "description": "Time when the session started. Network Server only.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object"
          },
          "skip_payload_crypto": {
            "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
            "type": "boolean"
          },
          "skip_payload_crypto_override": {
            "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
            "type": "boolean"
          },
          "supports_class_b": {
            "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "supports_class_c": {
            "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "supports_join": {
            "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
            "type": "boolean"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          },
          "used_dev_nonces": {
            "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "version_ids": {
            "description": "Identifies an end device model with version information.",
            "properties": {
              "band_id": {
                "type": "string"
              },
              "brand_id": {
                "type": "string"
              },
              "firmware_version": {
                "type": "string"
              },
              "hardware_version": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "field_mask": {
        "type": "string"
      },
      "mapping_key": {
        "type": "string"
      }
    },
    "type": "object"
  },
  "format_id": {
    "description": "Identifier of the format used to successfully parse the QR code data.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

GatewayQRCodeGenerator

Expand Collapse

post

/qr-codes/gateways/parse

Parse QR Codes of known formats and return the information contained within.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "format_id": {
    "description": "QR code format identifier.\nIf this field is not specified, the server will default to ttigpro1.",
    "type": "string"
  },
  "qr_code": {
    "description": "Raw QR code contents.",
    "format": "byte",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "format_id": {
    "description": "Identifier of the format used to parse the QR code data.",
    "type": "string"
  },
  "gateway_eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  },
  "owner_token": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/qr-codes/gateways/{format_id}/parse

Parse QR Codes of known formats and return the information contained within.

Expand Collapse

Request Parameters
Field Type Required Description
format_id string true QR code format identifier. If this field is not specified, the server will default to ttigpro1.
Request Body
Show JSON Schema
{
  "qr_code": {
    "description": "Raw QR code contents.",
    "format": "byte",
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "format_id": {
    "description": "Identifier of the format used to parse the QR code data.",
    "type": "string"
  },
  "gateway_eui": {
    "example": "70B3D57ED000ABCD",
    "format": "string",
    "type": "string"
  },
  "owner_token": {
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

EndDeviceRegistrySearch

Search for end devices in the End Device Registry.

Expand Collapse

get

/search/applications/{application_ids.application_id}/devices

Search for end devices in the given application that match the conditions specified in the request.

Expand Collapse

Request Parameters
Field Type Required Description
application_ids.application_id string true
query string Find end devices where the ID, name, description or EUI contains this substring.
id_contains string Find end devices where the ID contains this substring.
name_contains string Find end devices where the name contains this substring.
description_contains string Find end devices where the description contains this substring.
attributes_contain[string] string This is a request variable of the map type. The query format is "map_name[key]=value", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age["bob"]=18
dev_eui_contains string Find end devices where the (hexadecimal) DevEUI contains this substring.
join_eui_contains string Find end devices where the (hexadecimal) JoinEUI contains this substring.
dev_addr_contains string Find end devices where the (hexadecimal) DevAddr contains this substring.
label_id_contains array Find end devices where one of the label_ids contains this substring.
field_mask string
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "end_devices": {
    "items": {
      "description": "Defines an End Device registration and its state on the network.\nThe persistence of the EndDevice is divided between the Network Server, Application Server and Join Server.\nSDKs are responsible for combining (if desired) the three.",
      "properties": {
        "activated_at": {
          "description": "Timestamp when the device has been activated. Stored in the Entity Registry.\nThis field is set by the Application Server when an end device sends\nits first uplink.\nThe Application Server will use the field in order to avoid repeated\ncalls to the Entity Registry.\nThe field cannot be unset once set.",
          "format": "date-time",
          "type": "string"
        },
        "application_server_address": {
          "description": "The address of the Application Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "application_server_id": {
          "description": "The AS-ID of the Application Server to use.\nStored in Join Server.",
          "type": "string"
        },
        "application_server_kek_label": {
          "description": "The KEK label of the Application Server to use for wrapping the application session key.\nStored in Join Server.",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this end device. Typically used for organizing end devices or for storing integration-specific data. Stored in Entity Registry.",
          "type": "object"
        },
        "battery_percentage": {
          "description": "Latest-known battery percentage of the device.\nReceived via the DevStatus MAC command at last_dev_status_received_at or earlier.\nStored in Network Server.",
          "format": "float",
          "type": "number"
        },
        "claim_authentication_code": {
          "description": "Authentication code for end devices.",
          "properties": {
            "valid_from": {
              "format": "date-time",
              "type": "string"
            },
            "valid_to": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "Description of the device. Stored in Entity Registry.",
          "type": "string"
        },
        "downlink_margin": {
          "description": "Demodulation signal-to-noise ratio (dB).\nReceived via the DevStatus MAC command at last_dev_status_received_at.\nStored in Network Server.",
          "format": "int32",
          "type": "integer"
        },
        "formatters": {
          "properties": {
            "down_formatter": {
              "default": "FORMATTER_NONE",
              "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
              "enum": [
                "FORMATTER_NONE",
                "FORMATTER_REPOSITORY",
                "FORMATTER_GRPC_SERVICE",
                "FORMATTER_JAVASCRIPT",
                "FORMATTER_CAYENNELPP"
              ],
              "type": "string"
            },
            "down_formatter_parameter": {
              "description": "Parameter for the down_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
              "type": "string"
            },
            "up_formatter": {
              "default": "FORMATTER_NONE",
              "description": " - FORMATTER_NONE: No payload formatter to work with raw payload only.\n - FORMATTER_REPOSITORY: Use payload formatter for the end device type from a repository.\n - FORMATTER_GRPC_SERVICE: gRPC service payload formatter. The parameter is the host:port of the service.\n - FORMATTER_JAVASCRIPT: Custom payload formatter that executes Javascript code. The parameter is a JavaScript filename.\n - FORMATTER_CAYENNELPP: CayenneLPP payload formatter.\n\nMore payload formatters can be added.",
              "enum": [
                "FORMATTER_NONE",
                "FORMATTER_REPOSITORY",
                "FORMATTER_GRPC_SERVICE",
                "FORMATTER_JAVASCRIPT",
                "FORMATTER_CAYENNELPP"
              ],
              "type": "string"
            },
            "up_formatter_parameter": {
              "description": "Parameter for the up_formatter, must be set together. The API enforces a maximum length of 16KB, but the size may be restricted further by deployment configuration.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "frequency_plan_id": {
          "description": "ID of the frequency plan used by this device.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "string"
        },
        "ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "dev_addr": {
              "description": "The LoRaWAN DevAddr.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "dev_eui": {
              "description": "The LoRaWAN DevEUI.",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            },
            "device_id": {
              "type": "string"
            },
            "join_eui": {
              "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
              "example": "70B3D57ED000ABCD",
              "format": "string",
              "type": "string"
            }
          },
          "type": "object"
        },
        "join_server_address": {
          "description": "The address of the Join Server where this device is supposed to be registered.\nStored in Entity Registry.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "label_ids": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "last_dev_nonce": {
          "description": "Last DevNonce used.\nThis field is only used for devices using LoRaWAN version 1.1 and later.\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_dev_status_received_at": {
          "description": "Time when last DevStatus MAC command was received.\nStored in Network Server.",
          "format": "date-time",
          "type": "string"
        },
        "last_join_nonce": {
          "description": "Last JoinNonce/AppNonce(for devices using LoRaWAN versions preceding 1.1) used.\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_rj_count_0": {
          "description": "Last Rejoin counter value used (type 0/2).\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_rj_count_1": {
          "description": "Last Rejoin counter value used (type 1).\nStored in Join Server.",
          "format": "int64",
          "type": "integer"
        },
        "last_seen_at": {
          "description": "Timestamp when a device uplink has been last observed.\nThis field is set by the Application Server and stored in the Identity Server.",
          "format": "date-time",
          "type": "string"
        },
        "locations": {
          "additionalProperties": {
            "properties": {
              "accuracy": {
                "description": "The accuracy of the location (meters).",
                "format": "int32",
                "type": "integer"
              },
              "altitude": {
                "description": "The altitude (meters), where 0 is the mean sea level.",
                "format": "int32",
                "type": "integer"
              },
              "latitude": {
                "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                "format": "double",
                "type": "number"
              },
              "longitude": {
                "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                "format": "double",
                "type": "number"
              },
              "source": {
                "default": "SOURCE_UNKNOWN",
                "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                "enum": [
                  "SOURCE_UNKNOWN",
                  "SOURCE_GPS",
                  "SOURCE_REGISTRY",
                  "SOURCE_IP_GEOLOCATION",
                  "SOURCE_WIFI_RSSI_GEOLOCATION",
                  "SOURCE_BT_RSSI_GEOLOCATION",
                  "SOURCE_LORA_RSSI_GEOLOCATION",
                  "SOURCE_LORA_TDOA_GEOLOCATION",
                  "SOURCE_COMBINED_GEOLOCATION"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": "Location of the device. Stored in Entity Registry.",
          "type": "object"
        },
        "lora_alliance_profile_ids": {
          "properties": {
            "vendor_id": {
              "description": "VendorID managed by the LoRa Alliance, as defined in TR005.",
              "format": "int64",
              "type": "integer"
            },
            "vendor_profile_id": {
              "description": "ID of the LoRaWAN end device profile assigned by the vendor.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "lorawan_phy_version": {
          "default": "PHY_UNKNOWN",
          "enum": [
            "PHY_UNKNOWN",
            "PHY_V1_0",
            "TS001_V1_0",
            "PHY_V1_0_1",
            "TS001_V1_0_1",
            "PHY_V1_0_2_REV_A",
            "RP001_V1_0_2",
            "PHY_V1_0_2_REV_B",
            "RP001_V1_0_2_REV_B",
            "PHY_V1_1_REV_A",
            "RP001_V1_1_REV_A",
            "PHY_V1_1_REV_B",
            "RP001_V1_1_REV_B",
            "PHY_V1_0_3_REV_A",
            "RP001_V1_0_3_REV_A",
            "RP002_V1_0_0",
            "RP002_V1_0_1",
            "RP002_V1_0_2",
            "RP002_V1_0_3",
            "RP002_V1_0_4"
          ],
          "type": "string"
        },
        "lorawan_version": {
          "default": "MAC_UNKNOWN",
          "enum": [
            "MAC_UNKNOWN",
            "MAC_V1_0",
            "MAC_V1_0_1",
            "MAC_V1_0_2",
            "MAC_V1_1",
            "MAC_V1_0_3",
            "MAC_V1_0_4"
          ],
          "type": "string"
        },
        "mac_settings": {
          "properties": {
            "adr": {
              "description": "Adaptive Data Rate settings.",
              "properties": {
                "disabled": {
                  "description": "Configuration options for cases in which ADR is to be disabled\ncompletely.",
                  "type": "object"
                },
                "dynamic": {
                  "description": "Configuration options for dynamic ADR.",
                  "properties": {
                    "channel_steering": {
                      "description": "EXPERIMENTAL: Channel steering settings.",
                      "properties": {
                        "disabled": {
                          "description": "Configuration options for cases in which ADR is not supposed to steer the end device\nto another set of channels.",
                          "type": "object"
                        },
                        "lora_narrow": {
                          "description": "Configuration options for LoRa narrow channels steering.\nThe narrow mode attempts to steer the end device towards\nusing the LoRa modulated, 125kHz bandwidth channels.",
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "margin": {
                      "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "float",
                      "type": "number"
                    },
                    "max_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "max_nb_trans": {
                      "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_tx_power_index": {
                      "description": "Maximum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_data_rate_index": {
                      "properties": {
                        "value": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "min_nb_trans": {
                      "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "min_tx_power_index": {
                      "description": "Minimum transmission power index.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "overrides": {
                      "description": "EXPERIMENTAL: Configuration overrides.",
                      "properties": {
                        "data_rate_0": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_1": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_10": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_11": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_12": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_13": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_14": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_15": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_2": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_3": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_4": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_5": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_6": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_7": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_8": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "data_rate_9": {
                          "description": "EXPERIMENTAL: Data rate index override settings.",
                          "properties": {
                            "max_nb_trans": {
                              "description": "Maximum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "min_nb_trans": {
                              "description": "Minimum number of retransmissions.\nIf unset, the default value from Network Server configuration will be used.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "static": {
                  "description": "Configuration options for static ADR.",
                  "properties": {
                    "data_rate_index": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    },
                    "nb_trans": {
                      "description": "Number of retransmissions.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "tx_power_index": {
                      "description": "Transmission power index to use.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "adr_margin": {
              "description": "The ADR margin (dB) tells the network server how much margin it should add in ADR requests.\nA bigger margin is less efficient, but gives a better chance of successful reception.\nThis field is deprecated, use adr_settings.dynamic.margin instead.",
              "format": "float",
              "type": "number"
            },
            "beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "class_b_c_downlink_interval": {
              "description": "The minimum duration passed before a network-initiated(e.g. Class B or C) downlink following an arbitrary downlink.",
              "type": "string"
            },
            "class_b_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "class_c_timeout": {
              "description": "Maximum delay for the device to answer a MAC request or a confirmed downlink frame.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "desired_adr_ack_delay_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_DELAY_1",
                  "enum": [
                    "ADR_ACK_DELAY_1",
                    "ADR_ACK_DELAY_2",
                    "ADR_ACK_DELAY_4",
                    "ADR_ACK_DELAY_8",
                    "ADR_ACK_DELAY_16",
                    "ADR_ACK_DELAY_32",
                    "ADR_ACK_DELAY_64",
                    "ADR_ACK_DELAY_128",
                    "ADR_ACK_DELAY_256",
                    "ADR_ACK_DELAY_512",
                    "ADR_ACK_DELAY_1024",
                    "ADR_ACK_DELAY_2048",
                    "ADR_ACK_DELAY_4096",
                    "ADR_ACK_DELAY_8192",
                    "ADR_ACK_DELAY_16384",
                    "ADR_ACK_DELAY_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_adr_ack_limit_exponent": {
              "properties": {
                "value": {
                  "default": "ADR_ACK_LIMIT_1",
                  "enum": [
                    "ADR_ACK_LIMIT_1",
                    "ADR_ACK_LIMIT_2",
                    "ADR_ACK_LIMIT_4",
                    "ADR_ACK_LIMIT_8",
                    "ADR_ACK_LIMIT_16",
                    "ADR_ACK_LIMIT_32",
                    "ADR_ACK_LIMIT_64",
                    "ADR_ACK_LIMIT_128",
                    "ADR_ACK_LIMIT_256",
                    "ADR_ACK_LIMIT_512",
                    "ADR_ACK_LIMIT_1024",
                    "ADR_ACK_LIMIT_2048",
                    "ADR_ACK_LIMIT_4096",
                    "ADR_ACK_LIMIT_8192",
                    "ADR_ACK_LIMIT_16384",
                    "ADR_ACK_LIMIT_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_beacon_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_max_eirp": {
              "properties": {
                "value": {
                  "default": "DEVICE_EIRP_8",
                  "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                  "enum": [
                    "DEVICE_EIRP_8",
                    "DEVICE_EIRP_10",
                    "DEVICE_EIRP_12",
                    "DEVICE_EIRP_13",
                    "DEVICE_EIRP_14",
                    "DEVICE_EIRP_16",
                    "DEVICE_EIRP_18",
                    "DEVICE_EIRP_20",
                    "DEVICE_EIRP_21",
                    "DEVICE_EIRP_24",
                    "DEVICE_EIRP_26",
                    "DEVICE_EIRP_27",
                    "DEVICE_EIRP_29",
                    "DEVICE_EIRP_30",
                    "DEVICE_EIRP_33",
                    "DEVICE_EIRP_36"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "desired_rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "downlink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "factory_preset_frequencies": {
              "description": "List of factory-preset frequencies.\nIf unset, the default value from Network Server configuration or regional parameters specification will be used.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "max_duty_cycle": {
              "properties": {
                "value": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "relay": {
              "description": "RelaySettings represent the settings of a relay.\nThis is used internally by the Network Server.",
              "properties": {
                "served": {
                  "properties": {
                    "always": {
                      "type": "object"
                    },
                    "backoff": {
                      "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "dynamic": {
                      "properties": {
                        "smart_enable_level": {
                          "default": "RELAY_SMART_ENABLE_LEVEL_8",
                          "enum": [
                            "RELAY_SMART_ENABLE_LEVEL_8",
                            "RELAY_SMART_ENABLE_LEVEL_16",
                            "RELAY_SMART_ENABLE_LEVEL_32",
                            "RELAY_SMART_ENABLE_LEVEL_64"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "end_device_controlled": {
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving_device_id": {
                      "description": "End device identifier of the serving end device.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "serving": {
                  "properties": {
                    "cad_periodicity": {
                      "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                      "enum": [
                        "RELAY_CAD_PERIODICITY_1_SECOND",
                        "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                        "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                      ],
                      "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                      "type": "string"
                    },
                    "default_channel_index": {
                      "description": "Index of the default wake on radio channel.\nIf unset, the default value from Network Server configuration will be used.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "limits": {
                      "properties": {
                        "join_requests": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "notifications": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "overall": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "reset_behavior": {
                          "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "enum": [
                            "RELAY_RESET_LIMIT_COUNTER_ZERO",
                            "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                            "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                            "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                          ],
                          "type": "string"
                        },
                        "uplink_messages": {
                          "properties": {
                            "bucket_size": {
                              "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                              "enum": [
                                "RELAY_LIMIT_BUCKET_SIZE_1",
                                "RELAY_LIMIT_BUCKET_SIZE_2",
                                "RELAY_LIMIT_BUCKET_SIZE_4",
                                "RELAY_LIMIT_BUCKET_SIZE_12"
                              ],
                              "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                              "type": "string"
                            },
                            "reload_rate": {
                              "description": "The number of tokens which are replenished in the bucket every hour.",
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "second_channel": {
                      "properties": {
                        "ack_offset": {
                          "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                          "enum": [
                            "RELAY_SECOND_CH_ACK_OFFSET_0",
                            "RELAY_SECOND_CH_ACK_OFFSET_200",
                            "RELAY_SECOND_CH_ACK_OFFSET_400",
                            "RELAY_SECOND_CH_ACK_OFFSET_800",
                            "RELAY_SECOND_CH_ACK_OFFSET_1600",
                            "RELAY_SECOND_CH_ACK_OFFSET_3200"
                          ],
                          "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                          "type": "string"
                        },
                        "data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "frequency": {
                          "description": "The frequency (Hz) used by the wake on radio message.",
                          "format": "uint64",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "uplink_forwarding_rules": {
                      "description": "Configured uplink forwarding rules.",
                      "items": {
                        "properties": {
                          "device_id": {
                            "description": "End device identifier of the served end device.",
                            "type": "string"
                          },
                          "last_w_f_cnt": {
                            "description": "Last wake on radio frame counter used by the served end device.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "limits": {
                            "properties": {
                              "bucket_size": {
                                "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                "enum": [
                                  "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "RELAY_LIMIT_BUCKET_SIZE_2",
                                  "RELAY_LIMIT_BUCKET_SIZE_4",
                                  "RELAY_LIMIT_BUCKET_SIZE_12"
                                ],
                                "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                "type": "string"
                              },
                              "reload_rate": {
                                "description": "The number of tokens which are replenished in the bucket every hour.",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "session_key_id": {
                            "description": "Session key ID of the session keys used to derive the root relay session key.",
                            "format": "byte",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "resets_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "rx1_data_rate_offset": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx1_delay": {
              "properties": {
                "value": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_data_rate_index": {
              "properties": {
                "value": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "rx2_frequency": {
              "properties": {
                "value": {
                  "format": "uint64",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "schedule_downlinks": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "status_count_periodicity": {
              "description": "Number of uplink messages after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "format": "int64",
              "type": "integer"
            },
            "status_time_periodicity": {
              "description": "The interval after which a DevStatusReq MACCommand shall be sent.\nIf unset, the default value from Network Server configuration will be used.",
              "type": "string"
            },
            "supports_32_bit_f_cnt": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "uplink_dwell_time": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "use_adr": {
              "properties": {
                "value": {
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "mac_settings_profile_ids": {
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "profile_id": {
              "description": "Profile ID.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "mac_state": {
          "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
          "properties": {
            "current_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "device_class": {
              "default": "CLASS_A",
              "enum": [
                "CLASS_A",
                "CLASS_B",
                "CLASS_C"
              ],
              "type": "string"
            },
            "last_adr_change_f_cnt_up": {
              "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
              "format": "int64",
              "type": "integer"
            },
            "last_confirmed_downlink_at": {
              "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_dev_status_f_cnt_up": {
              "description": "Frame counter value of last uplink containing DevStatusAns.",
              "format": "int64",
              "type": "integer"
            },
            "last_downlink_at": {
              "description": "Time when the last downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_network_initiated_downlink_at": {
              "description": "Time when the last network-initiated downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "lorawan_version": {
              "default": "MAC_UNKNOWN",
              "enum": [
                "MAC_UNKNOWN",
                "MAC_V1_0",
                "MAC_V1_0_1",
                "MAC_V1_0_2",
                "MAC_V1_1",
                "MAC_V1_0_3",
                "MAC_V1_0_4"
              ],
              "type": "string"
            },
            "pending_application_downlink": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pending_join_request": {
              "properties": {
                "cf_list": {
                  "properties": {
                    "ch_masks": {
                      "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "freq": {
                      "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                      "items": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "type": {
                      "default": "FREQUENCIES",
                      "enum": [
                        "FREQUENCIES",
                        "CHANNEL_MASKS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "downlink_settings": {
                  "properties": {
                    "opt_neg": {
                      "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                      "type": "boolean"
                    },
                    "rx1_dr_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_dr": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_relay_downlink": {
              "properties": {
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_requests": {
              "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "queued_join_accept": {
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "keys": {
                  "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                  "properties": {
                    "app_s_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "nwk_s_enc_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "s_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "payload": {
                  "description": "Payload of the join-accept received from Join Server.",
                  "format": "byte",
                  "type": "string"
                },
                "request": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "downlink_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "queued_responses": {
              "description": "Queued MAC responses.\nRegenerated on each uplink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_downlinks": {
              "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "payload": {
                    "properties": {
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "full_f_cnt": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_mac_command_identifiers": {
              "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
              "items": {
                "default": "CID_RFU_0",
                "enum": [
                  "CID_RFU_0",
                  "CID_RESET",
                  "CID_LINK_CHECK",
                  "CID_LINK_ADR",
                  "CID_DUTY_CYCLE",
                  "CID_RX_PARAM_SETUP",
                  "CID_DEV_STATUS",
                  "CID_NEW_CHANNEL",
                  "CID_RX_TIMING_SETUP",
                  "CID_TX_PARAM_SETUP",
                  "CID_DL_CHANNEL",
                  "CID_REKEY",
                  "CID_ADR_PARAM_SETUP",
                  "CID_DEVICE_TIME",
                  "CID_FORCE_REJOIN",
                  "CID_REJOIN_PARAM_SETUP",
                  "CID_PING_SLOT_INFO",
                  "CID_PING_SLOT_CHANNEL",
                  "CID_BEACON_TIMING",
                  "CID_BEACON_FREQ",
                  "CID_DEVICE_MODE",
                  "CID_RELAY_CONF",
                  "CID_RELAY_END_DEVICE_CONF",
                  "CID_RELAY_FILTER_LIST",
                  "CID_RELAY_UPDATE_UPLINK_LIST",
                  "CID_RELAY_CTRL_UPLINK_LIST",
                  "CID_RELAY_CONFIGURE_FWD_LIMIT",
                  "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                ],
                "title": "- CID_BEACON_TIMING: Deprecated",
                "type": "string"
              },
              "type": "array"
            },
            "recent_uplinks": {
              "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "device_channel_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "payload": {
                    "properties": {
                      "join_accept_payload": {
                        "properties": {
                          "cf_list": {
                            "properties": {
                              "ch_masks": {
                                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                "items": {
                                  "type": "boolean"
                                },
                                "type": "array"
                              },
                              "freq": {
                                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                "items": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "type": "array"
                              },
                              "type": {
                                "default": "FREQUENCIES",
                                "enum": [
                                  "FREQUENCIES",
                                  "CHANNEL_MASKS"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "dev_addr": {
                            "example": "2600ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dl_settings": {
                            "properties": {
                              "opt_neg": {
                                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                "type": "boolean"
                              },
                              "rx1_dr_offset": {
                                "default": "DATA_RATE_OFFSET_0",
                                "enum": [
                                  "DATA_RATE_OFFSET_0",
                                  "DATA_RATE_OFFSET_1",
                                  "DATA_RATE_OFFSET_2",
                                  "DATA_RATE_OFFSET_3",
                                  "DATA_RATE_OFFSET_4",
                                  "DATA_RATE_OFFSET_5",
                                  "DATA_RATE_OFFSET_6",
                                  "DATA_RATE_OFFSET_7"
                                ],
                                "type": "string"
                              },
                              "rx2_dr": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "encrypted": {
                            "format": "byte",
                            "type": "string"
                          },
                          "join_nonce": {
                            "example": "ABCDEF",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rx_delay": {
                            "default": "RX_DELAY_0",
                            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                            "enum": [
                              "RX_DELAY_0",
                              "RX_DELAY_1",
                              "RX_DELAY_2",
                              "RX_DELAY_3",
                              "RX_DELAY_4",
                              "RX_DELAY_5",
                              "RX_DELAY_6",
                              "RX_DELAY_7",
                              "RX_DELAY_8",
                              "RX_DELAY_9",
                              "RX_DELAY_10",
                              "RX_DELAY_11",
                              "RX_DELAY_12",
                              "RX_DELAY_13",
                              "RX_DELAY_14",
                              "RX_DELAY_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dev_nonce": {
                            "example": "ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          },
                          "major": {
                            "default": "LORAWAN_R1",
                            "enum": [
                              "LORAWAN_R1"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "decoded_payload": {
                            "type": "object"
                          },
                          "f_hdr": {
                            "properties": {
                              "dev_addr": {
                                "example": "2600ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "f_cnt": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "f_ctrl": {
                                "properties": {
                                  "ack": {
                                    "type": "boolean"
                                  },
                                  "adr": {
                                    "type": "boolean"
                                  },
                                  "adr_ack_req": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "class_b": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "f_pending": {
                                    "description": "Only on downlink.",
                                    "type": "boolean"
                                  }
                                },
                                "type": "object"
                              },
                              "f_opts": {
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "frm_payload": {
                            "format": "byte",
                            "type": "string"
                          },
                          "full_f_cnt": {
                            "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "mic": {
                        "format": "byte",
                        "type": "string"
                      },
                      "rejoin_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rejoin_cnt": {
                            "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "rejoin_type": {
                            "default": "CONTEXT",
                            "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                            "enum": [
                              "CONTEXT",
                              "SESSION",
                              "KEYS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "title": "Message represents a LoRaWAN message",
                    "type": "object"
                  },
                  "received_at": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "rx_metadata": {
                    "items": {
                      "properties": {
                        "channel_rssi": {
                          "format": "float",
                          "type": "number"
                        },
                        "downlink_path_constraint": {
                          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                          "enum": [
                            "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                            "DOWNLINK_PATH_CONSTRAINT_NEVER"
                          ],
                          "type": "string"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "packet_broker": {
                          "type": "object"
                        },
                        "relay": {
                          "type": "object"
                        },
                        "snr": {
                          "format": "float",
                          "type": "number"
                        },
                        "uplink_token": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "settings": {
                    "properties": {
                      "data_rate": {
                        "properties": {
                          "fsk": {
                            "properties": {
                              "bit_rate": {
                                "description": "Bit rate (bps).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lora": {
                            "properties": {
                              "bandwidth": {
                                "description": "Bandwidth (Hz).",
                                "format": "int64",
                                "type": "integer"
                              },
                              "coding_rate": {
                                "type": "string"
                              },
                              "spreading_factor": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lrfhss": {
                            "properties": {
                              "coding_rate": {
                                "type": "string"
                              },
                              "modulation_type": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "operating_channel_width": {
                                "description": "Operating Channel Width (Hz).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "rejected_adr_data_rate_indexes": {
              "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
              "items": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "rejected_adr_tx_power_indexes": {
              "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
              "items": {
                "format": "int64",
                "type": "integer"
              },
              "type": "array"
            },
            "rejected_data_rate_ranges": {
              "additionalProperties": {
                "properties": {
                  "ranges": {
                    "items": {
                      "properties": {
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "description": "Data rate ranges rejected by the device per frequency.",
              "type": "object"
            },
            "rejected_frequencies": {
              "description": "Frequencies rejected by the device.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "rx_windows_available": {
              "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "max_frequency": {
          "description": "Maximum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "format": "uint64",
          "type": "string"
        },
        "min_frequency": {
          "description": "Minimum frequency the device is capable of using (Hz). Stored in Network Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "format": "uint64",
          "type": "string"
        },
        "multicast": {
          "description": "Indicates whether this device represents a multicast group.",
          "type": "boolean"
        },
        "name": {
          "description": "Friendly name of the device. Stored in Entity Registry.",
          "type": "string"
        },
        "net_id": {
          "description": "Home NetID. Stored in Join Server.",
          "example": "000013",
          "format": "string",
          "type": "string"
        },
        "network_server_address": {
          "description": "The address of the Network Server where this device is supposed to be registered.\nStored in Entity Registry and Join Server.\nThe typical format of the address is \"host:port\". If the port is omitted,\nthe normal port inference (with DNS lookup, otherwise defaults) is used.\nThe connection shall be established with transport layer security (TLS).\nCustom certificate authorities may be configured out-of-band.",
          "type": "string"
        },
        "network_server_kek_label": {
          "description": "The KEK label of the Network Server to use for wrapping network session keys.\nStored in Join Server.",
          "type": "string"
        },
        "pending_mac_state": {
          "description": "MACState represents the state of MAC layer of the device.\nMACState is reset on each join for OTAA or ResetInd for ABP devices.\nThis is used internally by the Network Server.",
          "properties": {
            "current_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "desired_parameters": {
              "description": "MACParameters represent the parameters of the device's MAC layer (active or desired).\nThis is used internally by the Network Server.",
              "properties": {
                "adr_ack_delay": {
                  "description": "ADR: number of messages to wait after setting ADRAckReq and before changing TxPower or DataRate.\nThis field is deprecated, use adr_ack_delay_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_delay_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_DELAY_1",
                      "enum": [
                        "ADR_ACK_DELAY_1",
                        "ADR_ACK_DELAY_2",
                        "ADR_ACK_DELAY_4",
                        "ADR_ACK_DELAY_8",
                        "ADR_ACK_DELAY_16",
                        "ADR_ACK_DELAY_32",
                        "ADR_ACK_DELAY_64",
                        "ADR_ACK_DELAY_128",
                        "ADR_ACK_DELAY_256",
                        "ADR_ACK_DELAY_512",
                        "ADR_ACK_DELAY_1024",
                        "ADR_ACK_DELAY_2048",
                        "ADR_ACK_DELAY_4096",
                        "ADR_ACK_DELAY_8192",
                        "ADR_ACK_DELAY_16384",
                        "ADR_ACK_DELAY_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_ack_limit": {
                  "description": "ADR: number of messages to wait before setting ADRAckReq.\nThis field is deprecated, use adr_ack_limit_exponent instead.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_ack_limit_exponent": {
                  "properties": {
                    "value": {
                      "default": "ADR_ACK_LIMIT_1",
                      "enum": [
                        "ADR_ACK_LIMIT_1",
                        "ADR_ACK_LIMIT_2",
                        "ADR_ACK_LIMIT_4",
                        "ADR_ACK_LIMIT_8",
                        "ADR_ACK_LIMIT_16",
                        "ADR_ACK_LIMIT_32",
                        "ADR_ACK_LIMIT_64",
                        "ADR_ACK_LIMIT_128",
                        "ADR_ACK_LIMIT_256",
                        "ADR_ACK_LIMIT_512",
                        "ADR_ACK_LIMIT_1024",
                        "ADR_ACK_LIMIT_2048",
                        "ADR_ACK_LIMIT_4096",
                        "ADR_ACK_LIMIT_8192",
                        "ADR_ACK_LIMIT_16384",
                        "ADR_ACK_LIMIT_32768"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "adr_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "adr_nb_trans": {
                  "description": "ADR: number of retransmissions.",
                  "format": "int64",
                  "type": "integer"
                },
                "adr_tx_power_index": {
                  "description": "ADR: transmission power index to use.",
                  "format": "int64",
                  "type": "integer"
                },
                "beacon_frequency": {
                  "description": "Frequency of the class B beacon (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "channels": {
                  "description": "Configured uplink channels and optionally Rx1 frequency.",
                  "items": {
                    "properties": {
                      "downlink_frequency": {
                        "description": "Downlink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "enable_uplink": {
                        "description": "Channel can be used by device for uplink.",
                        "type": "boolean"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "uplink_frequency": {
                        "description": "Uplink frequency of the channel (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "downlink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "max_duty_cycle": {
                  "default": "DUTY_CYCLE_1",
                  "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                  "enum": [
                    "DUTY_CYCLE_1",
                    "DUTY_CYCLE_2",
                    "DUTY_CYCLE_4",
                    "DUTY_CYCLE_8",
                    "DUTY_CYCLE_16",
                    "DUTY_CYCLE_32",
                    "DUTY_CYCLE_64",
                    "DUTY_CYCLE_128",
                    "DUTY_CYCLE_256",
                    "DUTY_CYCLE_512",
                    "DUTY_CYCLE_1024",
                    "DUTY_CYCLE_2048",
                    "DUTY_CYCLE_4096",
                    "DUTY_CYCLE_8192",
                    "DUTY_CYCLE_16384",
                    "DUTY_CYCLE_32768"
                  ],
                  "type": "string"
                },
                "max_eirp": {
                  "description": "Maximum EIRP (dBm).",
                  "format": "float",
                  "type": "number"
                },
                "ping_slot_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "ping_slot_data_rate_index_value": {
                  "properties": {
                    "value": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "ping_slot_frequency": {
                  "description": "Frequency of the class B ping slot (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "rejoin_count_periodicity": {
                  "default": "REJOIN_COUNT_16",
                  "enum": [
                    "REJOIN_COUNT_16",
                    "REJOIN_COUNT_32",
                    "REJOIN_COUNT_64",
                    "REJOIN_COUNT_128",
                    "REJOIN_COUNT_256",
                    "REJOIN_COUNT_512",
                    "REJOIN_COUNT_1024",
                    "REJOIN_COUNT_2048",
                    "REJOIN_COUNT_4096",
                    "REJOIN_COUNT_8192",
                    "REJOIN_COUNT_16384",
                    "REJOIN_COUNT_32768",
                    "REJOIN_COUNT_65536",
                    "REJOIN_COUNT_131072",
                    "REJOIN_COUNT_262144",
                    "REJOIN_COUNT_524288"
                  ],
                  "type": "string"
                },
                "rejoin_time_periodicity": {
                  "default": "REJOIN_TIME_0",
                  "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                  "enum": [
                    "REJOIN_TIME_0",
                    "REJOIN_TIME_1",
                    "REJOIN_TIME_2",
                    "REJOIN_TIME_3",
                    "REJOIN_TIME_4",
                    "REJOIN_TIME_5",
                    "REJOIN_TIME_6",
                    "REJOIN_TIME_7",
                    "REJOIN_TIME_8",
                    "REJOIN_TIME_9",
                    "REJOIN_TIME_10",
                    "REJOIN_TIME_11",
                    "REJOIN_TIME_12",
                    "REJOIN_TIME_13",
                    "REJOIN_TIME_14",
                    "REJOIN_TIME_15"
                  ],
                  "type": "string"
                },
                "relay": {
                  "description": "RelayParameters represent the parameters of a relay.\nThis is used internally by the Network Server.",
                  "properties": {
                    "served": {
                      "properties": {
                        "always": {
                          "type": "object"
                        },
                        "backoff": {
                          "description": "Number of wake on radio frames to be sent without an acknowledgement before sending the uplink message directly.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "dynamic": {
                          "properties": {
                            "smart_enable_level": {
                              "default": "RELAY_SMART_ENABLE_LEVEL_8",
                              "enum": [
                                "RELAY_SMART_ENABLE_LEVEL_8",
                                "RELAY_SMART_ENABLE_LEVEL_16",
                                "RELAY_SMART_ENABLE_LEVEL_32",
                                "RELAY_SMART_ENABLE_LEVEL_64"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "end_device_controlled": {
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "serving_device_id": {
                          "description": "End device identifier of the serving end device.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "serving": {
                      "properties": {
                        "cad_periodicity": {
                          "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                          "enum": [
                            "RELAY_CAD_PERIODICITY_1_SECOND",
                            "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                            "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                          ],
                          "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                          "type": "string"
                        },
                        "default_channel_index": {
                          "description": "Index of the default wake on radio channel.",
                          "format": "int64",
                          "type": "integer"
                        },
                        "limits": {
                          "properties": {
                            "join_requests": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "notifications": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "overall": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "reset_behavior": {
                              "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                              "enum": [
                                "RELAY_RESET_LIMIT_COUNTER_ZERO",
                                "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                                "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                                "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                              ],
                              "type": "string"
                            },
                            "uplink_messages": {
                              "properties": {
                                "bucket_size": {
                                  "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                  "enum": [
                                    "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "RELAY_LIMIT_BUCKET_SIZE_2",
                                    "RELAY_LIMIT_BUCKET_SIZE_4",
                                    "RELAY_LIMIT_BUCKET_SIZE_12"
                                  ],
                                  "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                  "type": "string"
                                },
                                "reload_rate": {
                                  "description": "The number of tokens which are replenished in the bucket every hour.",
                                  "format": "int64",
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            }
                          },
                          "type": "object"
                        },
                        "second_channel": {
                          "properties": {
                            "ack_offset": {
                              "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                              "enum": [
                                "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "RELAY_SECOND_CH_ACK_OFFSET_200",
                                "RELAY_SECOND_CH_ACK_OFFSET_400",
                                "RELAY_SECOND_CH_ACK_OFFSET_800",
                                "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                "RELAY_SECOND_CH_ACK_OFFSET_3200"
                              ],
                              "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                              "type": "string"
                            },
                            "data_rate_index": {
                              "default": "DATA_RATE_0",
                              "enum": [
                                "DATA_RATE_0",
                                "DATA_RATE_1",
                                "DATA_RATE_2",
                                "DATA_RATE_3",
                                "DATA_RATE_4",
                                "DATA_RATE_5",
                                "DATA_RATE_6",
                                "DATA_RATE_7",
                                "DATA_RATE_8",
                                "DATA_RATE_9",
                                "DATA_RATE_10",
                                "DATA_RATE_11",
                                "DATA_RATE_12",
                                "DATA_RATE_13",
                                "DATA_RATE_14",
                                "DATA_RATE_15"
                              ],
                              "type": "string"
                            },
                            "frequency": {
                              "description": "The frequency (Hz) used by the wake on radio message.",
                              "format": "uint64",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "uplink_forwarding_rules": {
                          "description": "Configured uplink forwarding rules.",
                          "items": {
                            "properties": {
                              "device_id": {
                                "description": "End device identifier of the served end device.",
                                "type": "string"
                              },
                              "last_w_f_cnt": {
                                "description": "Last wake on radio frame counter used by the served end device.",
                                "format": "int64",
                                "type": "integer"
                              },
                              "limits": {
                                "properties": {
                                  "bucket_size": {
                                    "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                                    "enum": [
                                      "RELAY_LIMIT_BUCKET_SIZE_1",
                                      "RELAY_LIMIT_BUCKET_SIZE_2",
                                      "RELAY_LIMIT_BUCKET_SIZE_4",
                                      "RELAY_LIMIT_BUCKET_SIZE_12"
                                    ],
                                    "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                                    "type": "string"
                                  },
                                  "reload_rate": {
                                    "description": "The number of tokens which are replenished in the bucket every hour.",
                                    "format": "int64",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "session_key_id": {
                                "description": "Session key ID of the session keys used to derive the root relay session key.",
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "rx1_data_rate_offset": {
                  "default": "DATA_RATE_OFFSET_0",
                  "enum": [
                    "DATA_RATE_OFFSET_0",
                    "DATA_RATE_OFFSET_1",
                    "DATA_RATE_OFFSET_2",
                    "DATA_RATE_OFFSET_3",
                    "DATA_RATE_OFFSET_4",
                    "DATA_RATE_OFFSET_5",
                    "DATA_RATE_OFFSET_6",
                    "DATA_RATE_OFFSET_7"
                  ],
                  "type": "string"
                },
                "rx1_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                },
                "rx2_data_rate_index": {
                  "default": "DATA_RATE_0",
                  "enum": [
                    "DATA_RATE_0",
                    "DATA_RATE_1",
                    "DATA_RATE_2",
                    "DATA_RATE_3",
                    "DATA_RATE_4",
                    "DATA_RATE_5",
                    "DATA_RATE_6",
                    "DATA_RATE_7",
                    "DATA_RATE_8",
                    "DATA_RATE_9",
                    "DATA_RATE_10",
                    "DATA_RATE_11",
                    "DATA_RATE_12",
                    "DATA_RATE_13",
                    "DATA_RATE_14",
                    "DATA_RATE_15"
                  ],
                  "type": "string"
                },
                "rx2_frequency": {
                  "description": "Frequency for Rx2 (Hz).",
                  "format": "uint64",
                  "type": "string"
                },
                "uplink_dwell_time": {
                  "properties": {
                    "value": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "device_class": {
              "default": "CLASS_A",
              "enum": [
                "CLASS_A",
                "CLASS_B",
                "CLASS_C"
              ],
              "type": "string"
            },
            "last_adr_change_f_cnt_up": {
              "description": "Frame counter of uplink, which confirmed the last ADR parameter change.",
              "format": "int64",
              "type": "integer"
            },
            "last_confirmed_downlink_at": {
              "description": "Time when the last confirmed downlink message or MAC command was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_dev_status_f_cnt_up": {
              "description": "Frame counter value of last uplink containing DevStatusAns.",
              "format": "int64",
              "type": "integer"
            },
            "last_downlink_at": {
              "description": "Time when the last downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "last_network_initiated_downlink_at": {
              "description": "Time when the last network-initiated downlink message was scheduled.",
              "format": "date-time",
              "type": "string"
            },
            "lorawan_version": {
              "default": "MAC_UNKNOWN",
              "enum": [
                "MAC_UNKNOWN",
                "MAC_V1_0",
                "MAC_V1_0_1",
                "MAC_V1_0_2",
                "MAC_V1_1",
                "MAC_V1_0_3",
                "MAC_V1_0_4"
              ],
              "type": "string"
            },
            "pending_application_downlink": {
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Attributes for devices, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "class_b_c": {
                  "properties": {
                    "absolute_time": {
                      "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "gateways": {
                      "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                      "items": {
                        "properties": {
                          "antenna_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "gateway_ids": {
                            "properties": {
                              "eui": {
                                "description": "Secondary identifier, which can only be used in specific requests.",
                                "example": "70B3D57ED000ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "gateway_id": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "group_index": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "confirmed": {
                  "type": "boolean"
                },
                "confirmed_retry": {
                  "properties": {
                    "attempt": {
                      "description": "The number of attempted confirmed downlink acknowledgements.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "max_attempts": {
                      "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "decoded_payload": {
                  "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                  "type": "object"
                },
                "decoded_payload_warnings": {
                  "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "f_cnt": {
                  "format": "int64",
                  "type": "integer"
                },
                "f_port": {
                  "format": "int64",
                  "type": "integer"
                },
                "frm_payload": {
                  "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                  "format": "byte",
                  "type": "string"
                },
                "locations": {
                  "additionalProperties": {
                    "properties": {
                      "accuracy": {
                        "description": "The accuracy of the location (meters).",
                        "format": "int32",
                        "type": "integer"
                      },
                      "altitude": {
                        "description": "The altitude (meters), where 0 is the mean sea level.",
                        "format": "int32",
                        "type": "integer"
                      },
                      "latitude": {
                        "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "longitude": {
                        "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                        "format": "double",
                        "type": "number"
                      },
                      "source": {
                        "default": "SOURCE_UNKNOWN",
                        "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                        "enum": [
                          "SOURCE_UNKNOWN",
                          "SOURCE_GPS",
                          "SOURCE_REGISTRY",
                          "SOURCE_IP_GEOLOCATION",
                          "SOURCE_WIFI_RSSI_GEOLOCATION",
                          "SOURCE_BT_RSSI_GEOLOCATION",
                          "SOURCE_LORA_RSSI_GEOLOCATION",
                          "SOURCE_LORA_TDOA_GEOLOCATION",
                          "SOURCE_COMBINED_GEOLOCATION"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "description": "End device location metadata, set by the Application Server while handling the message.",
                  "type": "object"
                },
                "network_ids": {
                  "description": "Identifies a Network Server.",
                  "properties": {
                    "cluster_address": {
                      "description": "Cluster address of the Network Server.",
                      "type": "string"
                    },
                    "cluster_id": {
                      "description": "Cluster identifier of the Network Server.",
                      "type": "string"
                    },
                    "net_id": {
                      "description": "LoRa Alliance NetID.",
                      "example": "000013",
                      "format": "string",
                      "type": "string"
                    },
                    "ns_id": {
                      "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                      "example": "70B3D57ED000ABCD",
                      "format": "string",
                      "type": "string"
                    },
                    "tenant_address": {
                      "description": "Optional tenant address for multi-tenant deployments.",
                      "type": "string"
                    },
                    "tenant_id": {
                      "description": "Optional tenant identifier for multi-tenant deployments.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "default": "LOWEST",
                  "enum": [
                    "LOWEST",
                    "LOW",
                    "BELOW_NORMAL",
                    "NORMAL",
                    "ABOVE_NORMAL",
                    "HIGH",
                    "HIGHEST"
                  ],
                  "type": "string"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys used by this downlink.",
                  "format": "byte",
                  "type": "string"
                },
                "version_ids": {
                  "description": "Identifies an end device model with version information.",
                  "properties": {
                    "band_id": {
                      "type": "string"
                    },
                    "brand_id": {
                      "type": "string"
                    },
                    "firmware_version": {
                      "type": "string"
                    },
                    "hardware_version": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "pending_join_request": {
              "properties": {
                "cf_list": {
                  "properties": {
                    "ch_masks": {
                      "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                      "items": {
                        "type": "boolean"
                      },
                      "type": "array"
                    },
                    "freq": {
                      "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                      "items": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "type": {
                      "default": "FREQUENCIES",
                      "enum": [
                        "FREQUENCIES",
                        "CHANNEL_MASKS"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "downlink_settings": {
                  "properties": {
                    "opt_neg": {
                      "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                      "type": "boolean"
                    },
                    "rx1_dr_offset": {
                      "default": "DATA_RATE_OFFSET_0",
                      "enum": [
                        "DATA_RATE_OFFSET_0",
                        "DATA_RATE_OFFSET_1",
                        "DATA_RATE_OFFSET_2",
                        "DATA_RATE_OFFSET_3",
                        "DATA_RATE_OFFSET_4",
                        "DATA_RATE_OFFSET_5",
                        "DATA_RATE_OFFSET_6",
                        "DATA_RATE_OFFSET_7"
                      ],
                      "type": "string"
                    },
                    "rx2_dr": {
                      "default": "DATA_RATE_0",
                      "enum": [
                        "DATA_RATE_0",
                        "DATA_RATE_1",
                        "DATA_RATE_2",
                        "DATA_RATE_3",
                        "DATA_RATE_4",
                        "DATA_RATE_5",
                        "DATA_RATE_6",
                        "DATA_RATE_7",
                        "DATA_RATE_8",
                        "DATA_RATE_9",
                        "DATA_RATE_10",
                        "DATA_RATE_11",
                        "DATA_RATE_12",
                        "DATA_RATE_13",
                        "DATA_RATE_14",
                        "DATA_RATE_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "rx_delay": {
                  "default": "RX_DELAY_0",
                  "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                  "enum": [
                    "RX_DELAY_0",
                    "RX_DELAY_1",
                    "RX_DELAY_2",
                    "RX_DELAY_3",
                    "RX_DELAY_4",
                    "RX_DELAY_5",
                    "RX_DELAY_6",
                    "RX_DELAY_7",
                    "RX_DELAY_8",
                    "RX_DELAY_9",
                    "RX_DELAY_10",
                    "RX_DELAY_11",
                    "RX_DELAY_12",
                    "RX_DELAY_13",
                    "RX_DELAY_14",
                    "RX_DELAY_15"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_relay_downlink": {
              "properties": {
                "raw_payload": {
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "pending_requests": {
              "description": "Pending MAC requests(i.e. sent requests, for which no response has been received yet).\nRegenerated on each downlink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "ping_slot_periodicity": {
              "properties": {
                "value": {
                  "default": "PING_EVERY_1S",
                  "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                  "enum": [
                    "PING_EVERY_1S",
                    "PING_EVERY_2S",
                    "PING_EVERY_4S",
                    "PING_EVERY_8S",
                    "PING_EVERY_16S",
                    "PING_EVERY_32S",
                    "PING_EVERY_64S",
                    "PING_EVERY_128S"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "queued_join_accept": {
              "properties": {
                "correlation_ids": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "dev_addr": {
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "keys": {
                  "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
                  "properties": {
                    "app_s_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "f_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "nwk_s_enc_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "s_nwk_s_int_key": {
                      "properties": {
                        "encrypted_key": {
                          "format": "byte",
                          "type": "string"
                        },
                        "kek_label": {
                          "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                          "type": "string"
                        },
                        "key": {
                          "description": "The unencrypted AES key.",
                          "example": "0123456789ABCDEF0123456789ABCDEF",
                          "format": "string",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "session_key_id": {
                      "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                      "format": "byte",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "net_id": {
                  "example": "000013",
                  "format": "string",
                  "type": "string"
                },
                "payload": {
                  "description": "Payload of the join-accept received from Join Server.",
                  "format": "byte",
                  "type": "string"
                },
                "request": {
                  "properties": {
                    "cf_list": {
                      "properties": {
                        "ch_masks": {
                          "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                          "items": {
                            "type": "boolean"
                          },
                          "type": "array"
                        },
                        "freq": {
                          "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                          "items": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "type": "array"
                        },
                        "type": {
                          "default": "FREQUENCIES",
                          "enum": [
                            "FREQUENCIES",
                            "CHANNEL_MASKS"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "downlink_settings": {
                      "properties": {
                        "opt_neg": {
                          "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                          "type": "boolean"
                        },
                        "rx1_dr_offset": {
                          "default": "DATA_RATE_OFFSET_0",
                          "enum": [
                            "DATA_RATE_OFFSET_0",
                            "DATA_RATE_OFFSET_1",
                            "DATA_RATE_OFFSET_2",
                            "DATA_RATE_OFFSET_3",
                            "DATA_RATE_OFFSET_4",
                            "DATA_RATE_OFFSET_5",
                            "DATA_RATE_OFFSET_6",
                            "DATA_RATE_OFFSET_7"
                          ],
                          "type": "string"
                        },
                        "rx2_dr": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "rx_delay": {
                      "default": "RX_DELAY_0",
                      "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                      "enum": [
                        "RX_DELAY_0",
                        "RX_DELAY_1",
                        "RX_DELAY_2",
                        "RX_DELAY_3",
                        "RX_DELAY_4",
                        "RX_DELAY_5",
                        "RX_DELAY_6",
                        "RX_DELAY_7",
                        "RX_DELAY_8",
                        "RX_DELAY_9",
                        "RX_DELAY_10",
                        "RX_DELAY_11",
                        "RX_DELAY_12",
                        "RX_DELAY_13",
                        "RX_DELAY_14",
                        "RX_DELAY_15"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "queued_responses": {
              "description": "Queued MAC responses.\nRegenerated on each uplink.",
              "items": {
                "properties": {
                  "adr_param_setup_req": {
                    "properties": {
                      "adr_ack_delay_exponent": {
                        "default": "ADR_ACK_DELAY_1",
                        "enum": [
                          "ADR_ACK_DELAY_1",
                          "ADR_ACK_DELAY_2",
                          "ADR_ACK_DELAY_4",
                          "ADR_ACK_DELAY_8",
                          "ADR_ACK_DELAY_16",
                          "ADR_ACK_DELAY_32",
                          "ADR_ACK_DELAY_64",
                          "ADR_ACK_DELAY_128",
                          "ADR_ACK_DELAY_256",
                          "ADR_ACK_DELAY_512",
                          "ADR_ACK_DELAY_1024",
                          "ADR_ACK_DELAY_2048",
                          "ADR_ACK_DELAY_4096",
                          "ADR_ACK_DELAY_8192",
                          "ADR_ACK_DELAY_16384",
                          "ADR_ACK_DELAY_32768"
                        ],
                        "type": "string"
                      },
                      "adr_ack_limit_exponent": {
                        "default": "ADR_ACK_LIMIT_1",
                        "enum": [
                          "ADR_ACK_LIMIT_1",
                          "ADR_ACK_LIMIT_2",
                          "ADR_ACK_LIMIT_4",
                          "ADR_ACK_LIMIT_8",
                          "ADR_ACK_LIMIT_16",
                          "ADR_ACK_LIMIT_32",
                          "ADR_ACK_LIMIT_64",
                          "ADR_ACK_LIMIT_128",
                          "ADR_ACK_LIMIT_256",
                          "ADR_ACK_LIMIT_512",
                          "ADR_ACK_LIMIT_1024",
                          "ADR_ACK_LIMIT_2048",
                          "ADR_ACK_LIMIT_4096",
                          "ADR_ACK_LIMIT_8192",
                          "ADR_ACK_LIMIT_16384",
                          "ADR_ACK_LIMIT_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_ans": {
                    "properties": {
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_freq_req": {
                    "properties": {
                      "frequency": {
                        "description": "Frequency of the Class B beacons (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "beacon_timing_ans": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "delay": {
                        "description": "(uint16) See LoRaWAN specification.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "cid": {
                    "default": "CID_RFU_0",
                    "enum": [
                      "CID_RFU_0",
                      "CID_RESET",
                      "CID_LINK_CHECK",
                      "CID_LINK_ADR",
                      "CID_DUTY_CYCLE",
                      "CID_RX_PARAM_SETUP",
                      "CID_DEV_STATUS",
                      "CID_NEW_CHANNEL",
                      "CID_RX_TIMING_SETUP",
                      "CID_TX_PARAM_SETUP",
                      "CID_DL_CHANNEL",
                      "CID_REKEY",
                      "CID_ADR_PARAM_SETUP",
                      "CID_DEVICE_TIME",
                      "CID_FORCE_REJOIN",
                      "CID_REJOIN_PARAM_SETUP",
                      "CID_PING_SLOT_INFO",
                      "CID_PING_SLOT_CHANNEL",
                      "CID_BEACON_TIMING",
                      "CID_BEACON_FREQ",
                      "CID_DEVICE_MODE",
                      "CID_RELAY_CONF",
                      "CID_RELAY_END_DEVICE_CONF",
                      "CID_RELAY_FILTER_LIST",
                      "CID_RELAY_UPDATE_UPLINK_LIST",
                      "CID_RELAY_CTRL_UPLINK_LIST",
                      "CID_RELAY_CONFIGURE_FWD_LIMIT",
                      "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                    ],
                    "title": "- CID_BEACON_TIMING: Deprecated",
                    "type": "string"
                  },
                  "dev_status_ans": {
                    "properties": {
                      "battery": {
                        "description": "Device battery status.\n0 indicates that the device is connected to an external power source.\n1..254 indicates a battery level.\n255 indicates that the device was not able to measure the battery level.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "SNR of the last downlink (dB; [-32, +31]).",
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_conf": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_mode_ind": {
                    "properties": {
                      "class": {
                        "default": "CLASS_A",
                        "enum": [
                          "CLASS_A",
                          "CLASS_B",
                          "CLASS_C"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "device_time_ans": {
                    "properties": {
                      "time": {
                        "format": "date-time",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_ans": {
                    "properties": {
                      "channel_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "dl_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Downlink channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "duty_cycle_req": {
                    "properties": {
                      "max_duty_cycle": {
                        "default": "DUTY_CYCLE_1",
                        "description": " - DUTY_CYCLE_1: 100%.\n - DUTY_CYCLE_2: 50%.\n - DUTY_CYCLE_4: 25%.\n - DUTY_CYCLE_8: 12.5%.\n - DUTY_CYCLE_16: 6.25%.\n - DUTY_CYCLE_32: 3.125%.\n - DUTY_CYCLE_64: 1.5625%.\n - DUTY_CYCLE_128: Roughly 0.781%.\n - DUTY_CYCLE_256: Roughly 0.390%.\n - DUTY_CYCLE_512: Roughly 0.195%.\n - DUTY_CYCLE_1024: Roughly 0.098%.\n - DUTY_CYCLE_2048: Roughly 0.049%.\n - DUTY_CYCLE_4096: Roughly 0.024%.\n - DUTY_CYCLE_8192: Roughly 0.012%.\n - DUTY_CYCLE_16384: Roughly 0.006%.\n - DUTY_CYCLE_32768: Roughly 0.003%.",
                        "enum": [
                          "DUTY_CYCLE_1",
                          "DUTY_CYCLE_2",
                          "DUTY_CYCLE_4",
                          "DUTY_CYCLE_8",
                          "DUTY_CYCLE_16",
                          "DUTY_CYCLE_32",
                          "DUTY_CYCLE_64",
                          "DUTY_CYCLE_128",
                          "DUTY_CYCLE_256",
                          "DUTY_CYCLE_512",
                          "DUTY_CYCLE_1024",
                          "DUTY_CYCLE_2048",
                          "DUTY_CYCLE_4096",
                          "DUTY_CYCLE_8192",
                          "DUTY_CYCLE_16384",
                          "DUTY_CYCLE_32768"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "force_rejoin_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "max_retries": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "period_exponent": {
                        "default": "REJOIN_PERIOD_0",
                        "description": " - REJOIN_PERIOD_0: Every 32 to 64 seconds.\n - REJOIN_PERIOD_1: Every 64 to 96 seconds.\n - REJOIN_PERIOD_2: Every 128 to 160 seconds.\n - REJOIN_PERIOD_3: Every 256 to 288 seconds.\n - REJOIN_PERIOD_4: Every 512 to 544 seconds.\n - REJOIN_PERIOD_5: Every 1024 to 1056 seconds.\n - REJOIN_PERIOD_6: Every 2048 to 2080 seconds.\n - REJOIN_PERIOD_7: Every 4096 to 4128 seconds.",
                        "enum": [
                          "REJOIN_PERIOD_0",
                          "REJOIN_PERIOD_1",
                          "REJOIN_PERIOD_2",
                          "REJOIN_PERIOD_3",
                          "REJOIN_PERIOD_4",
                          "REJOIN_PERIOD_5",
                          "REJOIN_PERIOD_6",
                          "REJOIN_PERIOD_7"
                        ],
                        "type": "string"
                      },
                      "rejoin_type": {
                        "default": "CONTEXT",
                        "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                        "enum": [
                          "CONTEXT",
                          "SESSION",
                          "KEYS"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_ans": {
                    "properties": {
                      "channel_mask_ack": {
                        "type": "boolean"
                      },
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "tx_power_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "link_adr_req": {
                    "properties": {
                      "channel_mask": {
                        "items": {
                          "type": "boolean"
                        },
                        "type": "array"
                      },
                      "channel_mask_control": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "nb_trans": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "tx_power_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "link_check_ans": {
                    "properties": {
                      "gateway_count": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "margin": {
                        "description": "Indicates the link margin in dB of the received LinkCheckReq, relative to the demodulation floor.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_ans": {
                    "properties": {
                      "data_rate_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "new_channel_req": {
                    "properties": {
                      "channel_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "frequency": {
                        "description": "Channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      },
                      "max_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "min_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_ans": {
                    "properties": {
                      "data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_channel_req": {
                    "properties": {
                      "data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "frequency": {
                        "description": "Ping slot channel frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ping_slot_info_req": {
                    "properties": {
                      "period": {
                        "default": "PING_EVERY_1S",
                        "description": " - PING_EVERY_1S: Every second.\n - PING_EVERY_2S: Every 2 seconds.\n - PING_EVERY_4S: Every 4 seconds.\n - PING_EVERY_8S: Every 8 seconds.\n - PING_EVERY_16S: Every 16 seconds.\n - PING_EVERY_32S: Every 32 seconds.\n - PING_EVERY_64S: Every 64 seconds.\n - PING_EVERY_128S: Every 128 seconds.",
                        "enum": [
                          "PING_EVERY_1S",
                          "PING_EVERY_2S",
                          "PING_EVERY_4S",
                          "PING_EVERY_8S",
                          "PING_EVERY_16S",
                          "PING_EVERY_32S",
                          "PING_EVERY_64S",
                          "PING_EVERY_128S"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "raw_payload": {
                    "format": "byte",
                    "type": "string"
                  },
                  "rejoin_param_setup_ans": {
                    "properties": {
                      "max_time_exponent_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rejoin_param_setup_req": {
                    "properties": {
                      "max_count_exponent": {
                        "default": "REJOIN_COUNT_16",
                        "enum": [
                          "REJOIN_COUNT_16",
                          "REJOIN_COUNT_32",
                          "REJOIN_COUNT_64",
                          "REJOIN_COUNT_128",
                          "REJOIN_COUNT_256",
                          "REJOIN_COUNT_512",
                          "REJOIN_COUNT_1024",
                          "REJOIN_COUNT_2048",
                          "REJOIN_COUNT_4096",
                          "REJOIN_COUNT_8192",
                          "REJOIN_COUNT_16384",
                          "REJOIN_COUNT_32768",
                          "REJOIN_COUNT_65536",
                          "REJOIN_COUNT_131072",
                          "REJOIN_COUNT_262144",
                          "REJOIN_COUNT_524288"
                        ],
                        "type": "string"
                      },
                      "max_time_exponent": {
                        "default": "REJOIN_TIME_0",
                        "description": " - REJOIN_TIME_0: Every ~17.1 minutes.\n - REJOIN_TIME_1: Every ~34.1 minutes.\n - REJOIN_TIME_2: Every ~1.1 hours.\n - REJOIN_TIME_3: Every ~2.3 hours.\n - REJOIN_TIME_4: Every ~4.6 hours.\n - REJOIN_TIME_5: Every ~9.1 hours.\n - REJOIN_TIME_6: Every ~18.2 hours.\n - REJOIN_TIME_7: Every ~1.5 days.\n - REJOIN_TIME_8: Every ~3.0 days.\n - REJOIN_TIME_9: Every ~6.1 days.\n - REJOIN_TIME_10: Every ~12.1 days.\n - REJOIN_TIME_11: Every ~3.5 weeks.\n - REJOIN_TIME_12: Every ~1.6 months.\n - REJOIN_TIME_13: Every ~3.2 months.\n - REJOIN_TIME_14: Every ~6.4 months.\n - REJOIN_TIME_15: Every ~1.1 year.",
                        "enum": [
                          "REJOIN_TIME_0",
                          "REJOIN_TIME_1",
                          "REJOIN_TIME_2",
                          "REJOIN_TIME_3",
                          "REJOIN_TIME_4",
                          "REJOIN_TIME_5",
                          "REJOIN_TIME_6",
                          "REJOIN_TIME_7",
                          "REJOIN_TIME_8",
                          "REJOIN_TIME_9",
                          "REJOIN_TIME_10",
                          "REJOIN_TIME_11",
                          "REJOIN_TIME_12",
                          "REJOIN_TIME_13",
                          "REJOIN_TIME_14",
                          "REJOIN_TIME_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rekey_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_ans": {
                    "properties": {
                      "cad_periodicity_ack": {
                        "type": "boolean"
                      },
                      "default_channel_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_ack_offset_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "cad_periodicity": {
                            "default": "RELAY_CAD_PERIODICITY_1_SECOND",
                            "enum": [
                              "RELAY_CAD_PERIODICITY_1_SECOND",
                              "RELAY_CAD_PERIODICITY_500_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_250_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_100_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_50_MILLISECONDS",
                              "RELAY_CAD_PERIODICITY_20_MILLISECONDS"
                            ],
                            "title": "- RELAY_CAD_PERIODICITY_20_MILLISECONDS: sic",
                            "type": "string"
                          },
                          "default_channel_index": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_ans": {
                    "type": "object"
                  },
                  "relay_configure_fwd_limit_req": {
                    "properties": {
                      "global_uplink_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "notify_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "overall_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "reset_limit_counter": {
                        "default": "RELAY_RESET_LIMIT_COUNTER_ZERO",
                        "enum": [
                          "RELAY_RESET_LIMIT_COUNTER_ZERO",
                          "RELAY_RESET_LIMIT_COUNTER_RELOAD_RATE",
                          "RELAY_RESET_LIMIT_COUNTER_MAX_VALUE",
                          "RELAY_RESET_LIMIT_COUNTER_NO_RESET"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_ans": {
                    "properties": {
                      "rule_index_ack": {
                        "type": "boolean"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_ctrl_uplink_list_req": {
                    "properties": {
                      "action": {
                        "default": "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                        "enum": [
                          "RELAY_CTRL_UPLINK_LIST_ACTION_READ_W_F_CNT",
                          "RELAY_CTRL_UPLINK_LIST_ACTION_REMOVE_TRUSTED_END_DEVICE"
                        ],
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_ans": {
                    "properties": {
                      "backoff_ack": {
                        "type": "boolean"
                      },
                      "second_channel_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "second_channel_frequency_ack": {
                        "type": "boolean"
                      },
                      "second_channel_index_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "relay_end_device_conf_req": {
                    "properties": {
                      "configuration": {
                        "properties": {
                          "always": {
                            "type": "object"
                          },
                          "backoff": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "dynamic": {
                            "properties": {
                              "smart_enable_level": {
                                "default": "RELAY_SMART_ENABLE_LEVEL_8",
                                "enum": [
                                  "RELAY_SMART_ENABLE_LEVEL_8",
                                  "RELAY_SMART_ENABLE_LEVEL_16",
                                  "RELAY_SMART_ENABLE_LEVEL_32",
                                  "RELAY_SMART_ENABLE_LEVEL_64"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "end_device_controlled": {
                            "type": "object"
                          },
                          "second_channel": {
                            "properties": {
                              "ack_offset": {
                                "default": "RELAY_SECOND_CH_ACK_OFFSET_0",
                                "enum": [
                                  "RELAY_SECOND_CH_ACK_OFFSET_0",
                                  "RELAY_SECOND_CH_ACK_OFFSET_200",
                                  "RELAY_SECOND_CH_ACK_OFFSET_400",
                                  "RELAY_SECOND_CH_ACK_OFFSET_800",
                                  "RELAY_SECOND_CH_ACK_OFFSET_1600",
                                  "RELAY_SECOND_CH_ACK_OFFSET_3200"
                                ],
                                "title": "- RELAY_SECOND_CH_ACK_OFFSET_0: 0 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_200: 200 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_400: 400 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_800: 800 kHz\n - RELAY_SECOND_CH_ACK_OFFSET_1600: 1.6 MHz\n - RELAY_SECOND_CH_ACK_OFFSET_3200: 3.2 MHz",
                                "type": "string"
                              },
                              "data_rate_index": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              },
                              "frequency": {
                                "description": "The frequency (Hz) used by the wake on radio message.",
                                "format": "uint64",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "serving_device_id": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "relay_notify_new_end_device_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "rssi": {
                        "format": "int32",
                        "type": "integer"
                      },
                      "snr": {
                        "format": "int32",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "relay_update_uplink_list_ans": {
                    "type": "object"
                  },
                  "relay_update_uplink_list_req": {
                    "properties": {
                      "dev_addr": {
                        "example": "2600ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "device_id": {
                        "type": "string"
                      },
                      "forward_limits": {
                        "properties": {
                          "bucket_size": {
                            "default": "RELAY_LIMIT_BUCKET_SIZE_1",
                            "enum": [
                              "RELAY_LIMIT_BUCKET_SIZE_1",
                              "RELAY_LIMIT_BUCKET_SIZE_2",
                              "RELAY_LIMIT_BUCKET_SIZE_4",
                              "RELAY_LIMIT_BUCKET_SIZE_12"
                            ],
                            "title": "- RELAY_LIMIT_BUCKET_SIZE_12: sic",
                            "type": "string"
                          },
                          "reload_rate": {
                            "description": "The number of tokens which are replenished in the bucket every hour.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "root_wor_s_key": {
                        "example": "0123456789ABCDEF0123456789ABCDEF",
                        "format": "string",
                        "type": "string"
                      },
                      "rule_index": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "session_key_id": {
                        "format": "byte",
                        "type": "string"
                      },
                      "w_f_cnt": {
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "reset_conf": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "reset_ind": {
                    "properties": {
                      "minor_version": {
                        "default": "MINOR_RFU_0",
                        "enum": [
                          "MINOR_RFU_0",
                          "MINOR_1",
                          "MINOR_RFU_2",
                          "MINOR_RFU_3",
                          "MINOR_RFU_4",
                          "MINOR_RFU_5",
                          "MINOR_RFU_6",
                          "MINOR_RFU_7",
                          "MINOR_RFU_8",
                          "MINOR_RFU_9",
                          "MINOR_RFU_10",
                          "MINOR_RFU_11",
                          "MINOR_RFU_12",
                          "MINOR_RFU_13",
                          "MINOR_RFU_14",
                          "MINOR_RFU_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_ans": {
                    "properties": {
                      "rx1_data_rate_offset_ack": {
                        "type": "boolean"
                      },
                      "rx2_data_rate_index_ack": {
                        "type": "boolean"
                      },
                      "rx2_frequency_ack": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "rx_param_setup_req": {
                    "properties": {
                      "rx1_data_rate_offset": {
                        "default": "DATA_RATE_OFFSET_0",
                        "enum": [
                          "DATA_RATE_OFFSET_0",
                          "DATA_RATE_OFFSET_1",
                          "DATA_RATE_OFFSET_2",
                          "DATA_RATE_OFFSET_3",
                          "DATA_RATE_OFFSET_4",
                          "DATA_RATE_OFFSET_5",
                          "DATA_RATE_OFFSET_6",
                          "DATA_RATE_OFFSET_7"
                        ],
                        "type": "string"
                      },
                      "rx2_data_rate_index": {
                        "default": "DATA_RATE_0",
                        "enum": [
                          "DATA_RATE_0",
                          "DATA_RATE_1",
                          "DATA_RATE_2",
                          "DATA_RATE_3",
                          "DATA_RATE_4",
                          "DATA_RATE_5",
                          "DATA_RATE_6",
                          "DATA_RATE_7",
                          "DATA_RATE_8",
                          "DATA_RATE_9",
                          "DATA_RATE_10",
                          "DATA_RATE_11",
                          "DATA_RATE_12",
                          "DATA_RATE_13",
                          "DATA_RATE_14",
                          "DATA_RATE_15"
                        ],
                        "type": "string"
                      },
                      "rx2_frequency": {
                        "description": "Rx2 frequency (Hz).",
                        "format": "uint64",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "rx_timing_setup_req": {
                    "properties": {
                      "delay": {
                        "default": "RX_DELAY_0",
                        "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                        "enum": [
                          "RX_DELAY_0",
                          "RX_DELAY_1",
                          "RX_DELAY_2",
                          "RX_DELAY_3",
                          "RX_DELAY_4",
                          "RX_DELAY_5",
                          "RX_DELAY_6",
                          "RX_DELAY_7",
                          "RX_DELAY_8",
                          "RX_DELAY_9",
                          "RX_DELAY_10",
                          "RX_DELAY_11",
                          "RX_DELAY_12",
                          "RX_DELAY_13",
                          "RX_DELAY_14",
                          "RX_DELAY_15"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tx_param_setup_req": {
                    "properties": {
                      "downlink_dwell_time": {
                        "type": "boolean"
                      },
                      "max_eirp_index": {
                        "default": "DEVICE_EIRP_8",
                        "description": " - DEVICE_EIRP_8: 8 dBm.\n - DEVICE_EIRP_10: 10 dBm.\n - DEVICE_EIRP_12: 12 dBm.\n - DEVICE_EIRP_13: 13 dBm.\n - DEVICE_EIRP_14: 14 dBm.\n - DEVICE_EIRP_16: 16 dBm.\n - DEVICE_EIRP_18: 18 dBm.\n - DEVICE_EIRP_20: 20 dBm.\n - DEVICE_EIRP_21: 21 dBm.\n - DEVICE_EIRP_24: 24 dBm.\n - DEVICE_EIRP_26: 26 dBm.\n - DEVICE_EIRP_27: 27 dBm.\n - DEVICE_EIRP_29: 29 dBm.\n - DEVICE_EIRP_30: 30 dBm.\n - DEVICE_EIRP_33: 33 dBm.\n - DEVICE_EIRP_36: 36 dBm.",
                        "enum": [
                          "DEVICE_EIRP_8",
                          "DEVICE_EIRP_10",
                          "DEVICE_EIRP_12",
                          "DEVICE_EIRP_13",
                          "DEVICE_EIRP_14",
                          "DEVICE_EIRP_16",
                          "DEVICE_EIRP_18",
                          "DEVICE_EIRP_20",
                          "DEVICE_EIRP_21",
                          "DEVICE_EIRP_24",
                          "DEVICE_EIRP_26",
                          "DEVICE_EIRP_27",
                          "DEVICE_EIRP_29",
                          "DEVICE_EIRP_30",
                          "DEVICE_EIRP_33",
                          "DEVICE_EIRP_36"
                        ],
                        "type": "string"
                      },
                      "uplink_dwell_time": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_downlinks": {
              "description": "Recent data downlink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal DownlinkMessage definition which is binary compatible with the top level DownlinkMessage message.\nUsed for type safe recent downlink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "payload": {
                    "properties": {
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "full_f_cnt": {
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "recent_mac_command_identifiers": {
              "description": "MAC command identifiers sent by the end device in the last received uplink.\nThe Network Server may choose to store only certain types of MAC\ncommand identifiers in the underlying implementation.",
              "items": {
                "default": "CID_RFU_0",
                "enum": [
                  "CID_RFU_0",
                  "CID_RESET",
                  "CID_LINK_CHECK",
                  "CID_LINK_ADR",
                  "CID_DUTY_CYCLE",
                  "CID_RX_PARAM_SETUP",
                  "CID_DEV_STATUS",
                  "CID_NEW_CHANNEL",
                  "CID_RX_TIMING_SETUP",
                  "CID_TX_PARAM_SETUP",
                  "CID_DL_CHANNEL",
                  "CID_REKEY",
                  "CID_ADR_PARAM_SETUP",
                  "CID_DEVICE_TIME",
                  "CID_FORCE_REJOIN",
                  "CID_REJOIN_PARAM_SETUP",
                  "CID_PING_SLOT_INFO",
                  "CID_PING_SLOT_CHANNEL",
                  "CID_BEACON_TIMING",
                  "CID_BEACON_FREQ",
                  "CID_DEVICE_MODE",
                  "CID_RELAY_CONF",
                  "CID_RELAY_END_DEVICE_CONF",
                  "CID_RELAY_FILTER_LIST",
                  "CID_RELAY_UPDATE_UPLINK_LIST",
                  "CID_RELAY_CTRL_UPLINK_LIST",
                  "CID_RELAY_CONFIGURE_FWD_LIMIT",
                  "CID_RELAY_NOTIFY_NEW_END_DEVICE"
                ],
                "title": "- CID_BEACON_TIMING: Deprecated",
                "type": "string"
              },
              "type": "array"
            },
            "recent_uplinks": {
              "description": "Recent data uplink messages sorted by time.\nThe number of messages stored may depend on configuration.",
              "items": {
                "description": "A minimal UplinkMessage definition which is binary compatible with the top level UplinkMessage message.\nUsed for type safe recent uplink storage.",
                "properties": {
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "device_channel_index": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "payload": {
                    "properties": {
                      "join_accept_payload": {
                        "properties": {
                          "cf_list": {
                            "properties": {
                              "ch_masks": {
                                "description": "ChMasks controlling the channels to be used.\nLength of this field must be equal to the amount of uplink channels\ndefined by the selected frequency plan.",
                                "items": {
                                  "type": "boolean"
                                },
                                "type": "array"
                              },
                              "freq": {
                                "description": "Frequencies to be broadcasted, in hecto-Hz.\nThese values are broadcasted as 24 bits unsigned integers.\nThis field should not contain default values.",
                                "items": {
                                  "format": "int64",
                                  "type": "integer"
                                },
                                "type": "array"
                              },
                              "type": {
                                "default": "FREQUENCIES",
                                "enum": [
                                  "FREQUENCIES",
                                  "CHANNEL_MASKS"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "dev_addr": {
                            "example": "2600ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dl_settings": {
                            "properties": {
                              "opt_neg": {
                                "description": "OptNeg is set if Network Server implements LoRaWAN 1.1 or greater.",
                                "type": "boolean"
                              },
                              "rx1_dr_offset": {
                                "default": "DATA_RATE_OFFSET_0",
                                "enum": [
                                  "DATA_RATE_OFFSET_0",
                                  "DATA_RATE_OFFSET_1",
                                  "DATA_RATE_OFFSET_2",
                                  "DATA_RATE_OFFSET_3",
                                  "DATA_RATE_OFFSET_4",
                                  "DATA_RATE_OFFSET_5",
                                  "DATA_RATE_OFFSET_6",
                                  "DATA_RATE_OFFSET_7"
                                ],
                                "type": "string"
                              },
                              "rx2_dr": {
                                "default": "DATA_RATE_0",
                                "enum": [
                                  "DATA_RATE_0",
                                  "DATA_RATE_1",
                                  "DATA_RATE_2",
                                  "DATA_RATE_3",
                                  "DATA_RATE_4",
                                  "DATA_RATE_5",
                                  "DATA_RATE_6",
                                  "DATA_RATE_7",
                                  "DATA_RATE_8",
                                  "DATA_RATE_9",
                                  "DATA_RATE_10",
                                  "DATA_RATE_11",
                                  "DATA_RATE_12",
                                  "DATA_RATE_13",
                                  "DATA_RATE_14",
                                  "DATA_RATE_15"
                                ],
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "encrypted": {
                            "format": "byte",
                            "type": "string"
                          },
                          "join_nonce": {
                            "example": "ABCDEF",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rx_delay": {
                            "default": "RX_DELAY_0",
                            "description": " - RX_DELAY_0: 1 second.\n - RX_DELAY_1: 1 second.\n - RX_DELAY_2: 2 seconds.\n - RX_DELAY_3: 3 seconds.\n - RX_DELAY_4: 4 seconds.\n - RX_DELAY_5: 5 seconds.\n - RX_DELAY_6: 6 seconds.\n - RX_DELAY_7: 7 seconds.\n - RX_DELAY_8: 8 seconds.\n - RX_DELAY_9: 9 seconds.\n - RX_DELAY_10: 10 seconds.\n - RX_DELAY_11: 11 seconds.\n - RX_DELAY_12: 12 seconds.\n - RX_DELAY_13: 13 seconds.\n - RX_DELAY_14: 14 seconds.\n - RX_DELAY_15: 15 seconds.",
                            "enum": [
                              "RX_DELAY_0",
                              "RX_DELAY_1",
                              "RX_DELAY_2",
                              "RX_DELAY_3",
                              "RX_DELAY_4",
                              "RX_DELAY_5",
                              "RX_DELAY_6",
                              "RX_DELAY_7",
                              "RX_DELAY_8",
                              "RX_DELAY_9",
                              "RX_DELAY_10",
                              "RX_DELAY_11",
                              "RX_DELAY_12",
                              "RX_DELAY_13",
                              "RX_DELAY_14",
                              "RX_DELAY_15"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "join_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "dev_nonce": {
                            "example": "ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "m_hdr": {
                        "properties": {
                          "m_type": {
                            "default": "JOIN_REQUEST",
                            "enum": [
                              "JOIN_REQUEST",
                              "JOIN_ACCEPT",
                              "UNCONFIRMED_UP",
                              "UNCONFIRMED_DOWN",
                              "CONFIRMED_UP",
                              "CONFIRMED_DOWN",
                              "REJOIN_REQUEST",
                              "PROPRIETARY"
                            ],
                            "type": "string"
                          },
                          "major": {
                            "default": "LORAWAN_R1",
                            "enum": [
                              "LORAWAN_R1"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "mac_payload": {
                        "properties": {
                          "decoded_payload": {
                            "type": "object"
                          },
                          "f_hdr": {
                            "properties": {
                              "dev_addr": {
                                "example": "2600ABCD",
                                "format": "string",
                                "type": "string"
                              },
                              "f_cnt": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "f_ctrl": {
                                "properties": {
                                  "ack": {
                                    "type": "boolean"
                                  },
                                  "adr": {
                                    "type": "boolean"
                                  },
                                  "adr_ack_req": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "class_b": {
                                    "description": "Only on uplink.",
                                    "type": "boolean"
                                  },
                                  "f_pending": {
                                    "description": "Only on downlink.",
                                    "type": "boolean"
                                  }
                                },
                                "type": "object"
                              },
                              "f_opts": {
                                "format": "byte",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "f_port": {
                            "format": "int64",
                            "type": "integer"
                          },
                          "frm_payload": {
                            "format": "byte",
                            "type": "string"
                          },
                          "full_f_cnt": {
                            "description": "Full 32-bit FCnt value. Used internally by Network Server.",
                            "format": "int64",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "mic": {
                        "format": "byte",
                        "type": "string"
                      },
                      "rejoin_request_payload": {
                        "properties": {
                          "dev_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "join_eui": {
                            "example": "70B3D57ED000ABCD",
                            "format": "string",
                            "type": "string"
                          },
                          "net_id": {
                            "example": "000013",
                            "format": "string",
                            "type": "string"
                          },
                          "rejoin_cnt": {
                            "description": "Contains RJCount0 or RJCount1 depending on rejoin_type.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "rejoin_type": {
                            "default": "CONTEXT",
                            "description": " - CONTEXT: Resets DevAddr, Session Keys, Frame Counters, Radio Parameters.\n - SESSION: Equivalent to the initial JoinRequest.\n - KEYS: Resets DevAddr, Session Keys, Frame Counters, while keeping the Radio Parameters.",
                            "enum": [
                              "CONTEXT",
                              "SESSION",
                              "KEYS"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "title": "Message represents a LoRaWAN message",
                    "type": "object"
                  },
                  "received_at": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "rx_metadata": {
                    "items": {
                      "properties": {
                        "channel_rssi": {
                          "format": "float",
                          "type": "number"
                        },
                        "downlink_path_constraint": {
                          "default": "DOWNLINK_PATH_CONSTRAINT_NONE",
                          "description": " - DOWNLINK_PATH_CONSTRAINT_NONE: Indicates that the gateway can be selected for downlink without constraints by the Network Server.\n - DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER: Indicates that the gateway can be selected for downlink only if no other or better gateway can be selected.\n - DOWNLINK_PATH_CONSTRAINT_NEVER: Indicates that this gateway will never be selected for downlink, even if that results in no available downlink path.",
                          "enum": [
                            "DOWNLINK_PATH_CONSTRAINT_NONE",
                            "DOWNLINK_PATH_CONSTRAINT_PREFER_OTHER",
                            "DOWNLINK_PATH_CONSTRAINT_NEVER"
                          ],
                          "type": "string"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "packet_broker": {
                          "type": "object"
                        },
                        "relay": {
                          "type": "object"
                        },
                        "snr": {
                          "format": "float",
                          "type": "number"
                        },
                        "uplink_token": {
                          "format": "byte",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "settings": {
                    "properties": {
                      "data_rate": {
                        "properties": {
                          "fsk": {
                            "properties": {
                              "bit_rate": {
                                "description": "Bit rate (bps).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lora": {
                            "properties": {
                              "bandwidth": {
                                "description": "Bandwidth (Hz).",
                                "format": "int64",
                                "type": "integer"
                              },
                              "coding_rate": {
                                "type": "string"
                              },
                              "spreading_factor": {
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "lrfhss": {
                            "properties": {
                              "coding_rate": {
                                "type": "string"
                              },
                              "modulation_type": {
                                "format": "int64",
                                "type": "integer"
                              },
                              "operating_channel_width": {
                                "description": "Operating Channel Width (Hz).",
                                "format": "int64",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "rejected_adr_data_rate_indexes": {
              "description": "ADR Data rate index values rejected by the device.\nReset each time `current_parameters.channels` change.\nElements are sorted in ascending order.",
              "items": {
                "default": "DATA_RATE_0",
                "enum": [
                  "DATA_RATE_0",
                  "DATA_RATE_1",
                  "DATA_RATE_2",
                  "DATA_RATE_3",
                  "DATA_RATE_4",
                  "DATA_RATE_5",
                  "DATA_RATE_6",
                  "DATA_RATE_7",
                  "DATA_RATE_8",
                  "DATA_RATE_9",
                  "DATA_RATE_10",
                  "DATA_RATE_11",
                  "DATA_RATE_12",
                  "DATA_RATE_13",
                  "DATA_RATE_14",
                  "DATA_RATE_15"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "rejected_adr_tx_power_indexes": {
              "description": "ADR TX output power index values rejected by the device.\nElements are sorted in ascending order.",
              "items": {
                "format": "int64",
                "type": "integer"
              },
              "type": "array"
            },
            "rejected_data_rate_ranges": {
              "additionalProperties": {
                "properties": {
                  "ranges": {
                    "items": {
                      "properties": {
                        "max_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        },
                        "min_data_rate_index": {
                          "default": "DATA_RATE_0",
                          "enum": [
                            "DATA_RATE_0",
                            "DATA_RATE_1",
                            "DATA_RATE_2",
                            "DATA_RATE_3",
                            "DATA_RATE_4",
                            "DATA_RATE_5",
                            "DATA_RATE_6",
                            "DATA_RATE_7",
                            "DATA_RATE_8",
                            "DATA_RATE_9",
                            "DATA_RATE_10",
                            "DATA_RATE_11",
                            "DATA_RATE_12",
                            "DATA_RATE_13",
                            "DATA_RATE_14",
                            "DATA_RATE_15"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "description": "Data rate ranges rejected by the device per frequency.",
              "type": "object"
            },
            "rejected_frequencies": {
              "description": "Frequencies rejected by the device.",
              "items": {
                "format": "uint64",
                "type": "string"
              },
              "type": "array"
            },
            "rx_windows_available": {
              "description": "Whether or not Rx windows are expected to be open.\nSet to true every time an uplink is received.\nSet to false every time a successful downlink scheduling attempt is made.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "pending_session": {
          "properties": {
            "dev_addr": {
              "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "keys": {
              "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
              "properties": {
                "app_s_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "f_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "nwk_s_enc_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "s_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "last_a_f_cnt_down": {
              "description": "Last application downlink frame counter value used. Application Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_conf_f_cnt_down": {
              "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_f_cnt_up": {
              "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
              "format": "int64",
              "type": "integer"
            },
            "last_n_f_cnt_down": {
              "description": "Last network downlink frame counter value used. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "queued_application_downlinks": {
              "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
              "items": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "started_at": {
              "description": "Time when the session started. Network Server only.",
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "picture": {
          "properties": {
            "embedded": {
              "properties": {
                "data": {
                  "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                  "format": "byte",
                  "type": "string"
                },
                "mime_type": {
                  "description": "MIME type of the picture.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "sizes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "URLs of the picture for different sizes, if available on a CDN.",
              "type": "object"
            }
          },
          "type": "object"
        },
        "power_state": {
          "default": "POWER_UNKNOWN",
          "description": "Power state of the device.",
          "enum": [
            "POWER_UNKNOWN",
            "POWER_BATTERY",
            "POWER_EXTERNAL"
          ],
          "type": "string"
        },
        "provisioner_id": {
          "description": "ID of the provisioner. Stored in Join Server.",
          "type": "string"
        },
        "provisioning_data": {
          "description": "Vendor-specific provisioning data. Stored in Join Server.",
          "type": "object"
        },
        "queued_application_downlinks": {
          "description": "Queued Application downlink messages. Stored in Application Server,\nwhich sets them on the Network Server.\nThis field is deprecated and is always set equal to session.queued_application_downlinks.",
          "items": {
            "properties": {
              "attributes": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "Attributes for devices, set by the Application Server while handling the message.",
                "type": "object"
              },
              "class_b_c": {
                "properties": {
                  "absolute_time": {
                    "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "gateways": {
                    "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                    "items": {
                      "properties": {
                        "antenna_index": {
                          "format": "int64",
                          "type": "integer"
                        },
                        "gateway_ids": {
                          "properties": {
                            "eui": {
                              "description": "Secondary identifier, which can only be used in specific requests.",
                              "example": "70B3D57ED000ABCD",
                              "format": "string",
                              "type": "string"
                            },
                            "gateway_id": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "group_index": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "confirmed": {
                "type": "boolean"
              },
              "confirmed_retry": {
                "properties": {
                  "attempt": {
                    "description": "The number of attempted confirmed downlink acknowledgements.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "max_attempts": {
                    "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "correlation_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "decoded_payload": {
                "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                "type": "object"
              },
              "decoded_payload_warnings": {
                "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "f_cnt": {
                "format": "int64",
                "type": "integer"
              },
              "f_port": {
                "format": "int64",
                "type": "integer"
              },
              "frm_payload": {
                "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                "format": "byte",
                "type": "string"
              },
              "locations": {
                "additionalProperties": {
                  "properties": {
                    "accuracy": {
                      "description": "The accuracy of the location (meters).",
                      "format": "int32",
                      "type": "integer"
                    },
                    "altitude": {
                      "description": "The altitude (meters), where 0 is the mean sea level.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "latitude": {
                      "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "longitude": {
                      "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                      "format": "double",
                      "type": "number"
                    },
                    "source": {
                      "default": "SOURCE_UNKNOWN",
                      "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                      "enum": [
                        "SOURCE_UNKNOWN",
                        "SOURCE_GPS",
                        "SOURCE_REGISTRY",
                        "SOURCE_IP_GEOLOCATION",
                        "SOURCE_WIFI_RSSI_GEOLOCATION",
                        "SOURCE_BT_RSSI_GEOLOCATION",
                        "SOURCE_LORA_RSSI_GEOLOCATION",
                        "SOURCE_LORA_TDOA_GEOLOCATION",
                        "SOURCE_COMBINED_GEOLOCATION"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "description": "End device location metadata, set by the Application Server while handling the message.",
                "type": "object"
              },
              "network_ids": {
                "description": "Identifies a Network Server.",
                "properties": {
                  "cluster_address": {
                    "description": "Cluster address of the Network Server.",
                    "type": "string"
                  },
                  "cluster_id": {
                    "description": "Cluster identifier of the Network Server.",
                    "type": "string"
                  },
                  "net_id": {
                    "description": "LoRa Alliance NetID.",
                    "example": "000013",
                    "format": "string",
                    "type": "string"
                  },
                  "ns_id": {
                    "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                    "example": "70B3D57ED000ABCD",
                    "format": "string",
                    "type": "string"
                  },
                  "tenant_address": {
                    "description": "Optional tenant address for multi-tenant deployments.",
                    "type": "string"
                  },
                  "tenant_id": {
                    "description": "Optional tenant identifier for multi-tenant deployments.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "priority": {
                "default": "LOWEST",
                "enum": [
                  "LOWEST",
                  "LOW",
                  "BELOW_NORMAL",
                  "NORMAL",
                  "ABOVE_NORMAL",
                  "HIGH",
                  "HIGHEST"
                ],
                "type": "string"
              },
              "session_key_id": {
                "description": "Join Server issued identifier for the session keys used by this downlink.",
                "format": "byte",
                "type": "string"
              },
              "version_ids": {
                "description": "Identifies an end device model with version information.",
                "properties": {
                  "band_id": {
                    "type": "string"
                  },
                  "brand_id": {
                    "type": "string"
                  },
                  "firmware_version": {
                    "type": "string"
                  },
                  "hardware_version": {
                    "type": "string"
                  },
                  "model_id": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "resets_join_nonces": {
          "description": "Whether the device resets the join and dev nonces (not LoRaWAN compliant). Stored in Join Server.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "root_keys": {
          "description": "Root keys for a LoRaWAN device.\nThese are stored on the Join Server.",
          "properties": {
            "app_key": {
              "properties": {
                "encrypted_key": {
                  "format": "byte",
                  "type": "string"
                },
                "kek_label": {
                  "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                  "type": "string"
                },
                "key": {
                  "description": "The unencrypted AES key.",
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "nwk_key": {
              "properties": {
                "encrypted_key": {
                  "format": "byte",
                  "type": "string"
                },
                "kek_label": {
                  "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                  "type": "string"
                },
                "key": {
                  "description": "The unencrypted AES key.",
                  "example": "0123456789ABCDEF0123456789ABCDEF",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "root_key_id": {
              "description": "Join Server issued identifier for the root keys.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "serial_number": {
          "type": "string"
        },
        "service_profile_id": {
          "description": "Default service profile. Stored in Entity Registry.",
          "type": "string"
        },
        "session": {
          "properties": {
            "dev_addr": {
              "description": "Device Address, issued by the Network Server or chosen by device manufacturer in case of testing range (beginning with 00-03).\nKnown by Network Server, Application Server and Join Server. Owned by Network Server.",
              "example": "2600ABCD",
              "format": "string",
              "type": "string"
            },
            "keys": {
              "description": "Session keys for a LoRaWAN session.\nOnly the components for which the keys were meant, will have the key-encryption-key (KEK) to decrypt the individual keys.",
              "properties": {
                "app_s_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "f_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "nwk_s_enc_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "s_nwk_s_int_key": {
                  "properties": {
                    "encrypted_key": {
                      "format": "byte",
                      "type": "string"
                    },
                    "kek_label": {
                      "description": "The label of the RFC 3394 key-encryption-key (KEK) that was used to encrypt the key.",
                      "type": "string"
                    },
                    "key": {
                      "description": "The unencrypted AES key.",
                      "example": "0123456789ABCDEF0123456789ABCDEF",
                      "format": "string",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "session_key_id": {
                  "description": "Join Server issued identifier for the session keys.\nThis ID can be used to request the keys from the Join Server in case the are lost.",
                  "format": "byte",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "last_a_f_cnt_down": {
              "description": "Last application downlink frame counter value used. Application Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_conf_f_cnt_down": {
              "description": "Frame counter of the last confirmed downlink message sent. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "last_f_cnt_up": {
              "description": "Last uplink frame counter value used. Network Server only. Application Server assumes the Network Server checked it.",
              "format": "int64",
              "type": "integer"
            },
            "last_n_f_cnt_down": {
              "description": "Last network downlink frame counter value used. Network Server only.",
              "format": "int64",
              "type": "integer"
            },
            "queued_application_downlinks": {
              "description": "Queued Application downlink messages. Stored in Application Server and Network Server.",
              "items": {
                "properties": {
                  "attributes": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Attributes for devices, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "class_b_c": {
                    "properties": {
                      "absolute_time": {
                        "description": "Absolute time when the downlink message should be transmitted.\nThis requires the gateway to have GPS time synchronization.\nIf the time is in the past or if there is a scheduling conflict, the downlink message fails.\nIf null, the time is selected based on slot availability. This is recommended in class B mode.",
                        "format": "date-time",
                        "type": "string"
                      },
                      "gateways": {
                        "description": "Possible gateway identifiers, antenna index, and group index to use for this downlink message.\nThe Network Server selects one of these gateways for downlink, based on connectivity, signal quality, channel utilization and an available slot.\nIf none of the gateways can be selected, the downlink message fails.\nIf empty, a gateway and antenna is selected automatically from the gateways seen in recent uplinks.\nIf group index is set, gateways will be grouped by the index for the Network Server to select one gateway per group.",
                        "items": {
                          "properties": {
                            "antenna_index": {
                              "format": "int64",
                              "type": "integer"
                            },
                            "gateway_ids": {
                              "properties": {
                                "eui": {
                                  "description": "Secondary identifier, which can only be used in specific requests.",
                                  "example": "70B3D57ED000ABCD",
                                  "format": "string",
                                  "type": "string"
                                },
                                "gateway_id": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "group_index": {
                              "format": "int64",
                              "type": "integer"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "confirmed_retry": {
                    "properties": {
                      "attempt": {
                        "description": "The number of attempted confirmed downlink acknowledgements.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "max_attempts": {
                        "description": "The maximum number of confirmed downlink acknowledgement attempts.\nIf null, the Application Server configuration is used instead.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "correlation_ids": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "decoded_payload": {
                    "description": "The decoded frame payload of the downlink message.\nWhen scheduling downlink with a message processor configured for the end device (see formatters) or application (see default_formatters),\nthis fields acts as input for the downlink encoder, and the output is set to frm_payload.\nWhen reading downlink (listing the queue, downlink message events, etc), this fields acts as output of the downlink decoder, and the input is frm_payload.",
                    "type": "object"
                  },
                  "decoded_payload_warnings": {
                    "description": "Warnings generated by the message processor while encoding frm_payload (scheduling downlink) or decoding the frm_payload (reading downlink).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "f_cnt": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "f_port": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "frm_payload": {
                    "description": "The frame payload of the downlink message.\nThe payload is encrypted if the skip_payload_crypto field of the EndDevice\nis true.",
                    "format": "byte",
                    "type": "string"
                  },
                  "locations": {
                    "additionalProperties": {
                      "properties": {
                        "accuracy": {
                          "description": "The accuracy of the location (meters).",
                          "format": "int32",
                          "type": "integer"
                        },
                        "altitude": {
                          "description": "The altitude (meters), where 0 is the mean sea level.",
                          "format": "int32",
                          "type": "integer"
                        },
                        "latitude": {
                          "description": "The North–South position (degrees; -90 to +90), where 0 is the equator, North pole is positive, South pole is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "longitude": {
                          "description": "The East-West position (degrees; -180 to +180), where 0 is the Prime Meridian (Greenwich), East is positive , West is negative.",
                          "format": "double",
                          "type": "number"
                        },
                        "source": {
                          "default": "SOURCE_UNKNOWN",
                          "description": " - SOURCE_UNKNOWN: The source of the location is not known or not set.\n - SOURCE_GPS: The location is determined by GPS.\n - SOURCE_REGISTRY: The location is set in and updated from a registry.\n - SOURCE_IP_GEOLOCATION: The location is estimated with IP geolocation.\n - SOURCE_WIFI_RSSI_GEOLOCATION: The location is estimated with WiFi RSSI geolocation.\n - SOURCE_BT_RSSI_GEOLOCATION: The location is estimated with BT/BLE RSSI geolocation.\n - SOURCE_LORA_RSSI_GEOLOCATION: The location is estimated with LoRa RSSI geolocation.\n - SOURCE_LORA_TDOA_GEOLOCATION: The location is estimated with LoRa TDOA geolocation.\n - SOURCE_COMBINED_GEOLOCATION: The location is estimated by a combination of geolocation sources.\n\nMore estimation methods can be added.",
                          "enum": [
                            "SOURCE_UNKNOWN",
                            "SOURCE_GPS",
                            "SOURCE_REGISTRY",
                            "SOURCE_IP_GEOLOCATION",
                            "SOURCE_WIFI_RSSI_GEOLOCATION",
                            "SOURCE_BT_RSSI_GEOLOCATION",
                            "SOURCE_LORA_RSSI_GEOLOCATION",
                            "SOURCE_LORA_TDOA_GEOLOCATION",
                            "SOURCE_COMBINED_GEOLOCATION"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "description": "End device location metadata, set by the Application Server while handling the message.",
                    "type": "object"
                  },
                  "network_ids": {
                    "description": "Identifies a Network Server.",
                    "properties": {
                      "cluster_address": {
                        "description": "Cluster address of the Network Server.",
                        "type": "string"
                      },
                      "cluster_id": {
                        "description": "Cluster identifier of the Network Server.",
                        "type": "string"
                      },
                      "net_id": {
                        "description": "LoRa Alliance NetID.",
                        "example": "000013",
                        "format": "string",
                        "type": "string"
                      },
                      "ns_id": {
                        "description": "LoRaWAN NSID (EUI-64) that uniquely identifies the Network Server instance.",
                        "example": "70B3D57ED000ABCD",
                        "format": "string",
                        "type": "string"
                      },
                      "tenant_address": {
                        "description": "Optional tenant address for multi-tenant deployments.",
                        "type": "string"
                      },
                      "tenant_id": {
                        "description": "Optional tenant identifier for multi-tenant deployments.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "default": "LOWEST",
                    "enum": [
                      "LOWEST",
                      "LOW",
                      "BELOW_NORMAL",
                      "NORMAL",
                      "ABOVE_NORMAL",
                      "HIGH",
                      "HIGHEST"
                    ],
                    "type": "string"
                  },
                  "session_key_id": {
                    "description": "Join Server issued identifier for the session keys used by this downlink.",
                    "format": "byte",
                    "type": "string"
                  },
                  "version_ids": {
                    "description": "Identifies an end device model with version information.",
                    "properties": {
                      "band_id": {
                        "type": "string"
                      },
                      "brand_id": {
                        "type": "string"
                      },
                      "firmware_version": {
                        "type": "string"
                      },
                      "hardware_version": {
                        "type": "string"
                      },
                      "model_id": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "started_at": {
              "description": "Time when the session started. Network Server only.",
              "format": "date-time",
              "type": "string"
            }
          },
          "type": "object"
        },
        "skip_payload_crypto": {
          "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field is deprecated, use skip_payload_crypto_override instead.",
          "type": "boolean"
        },
        "skip_payload_crypto_override": {
          "description": "Skip decryption of uplink payloads and encryption of downlink payloads.\nThis field overrides the application-level setting.",
          "type": "boolean"
        },
        "supports_class_b": {
          "description": "Whether the device supports class B.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "supports_class_c": {
          "description": "Whether the device supports class C.\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "supports_join": {
          "description": "The device supports join (it's OTAA).\nCopied on creation from template identified by version_ids, if any or from the home Network Server device profile, if any.",
          "type": "boolean"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "used_dev_nonces": {
          "description": "Used DevNonces sorted in ascending order.\nThis field is only used for devices using LoRaWAN versions preceding 1.1.\nStored in Join Server.",
          "items": {
            "format": "int64",
            "type": "integer"
          },
          "type": "array"
        },
        "version_ids": {
          "description": "Identifies an end device model with version information.",
          "properties": {
            "band_id": {
              "type": "string"
            },
            "brand_id": {
              "type": "string"
            },
            "firmware_version": {
              "type": "string"
            },
            "hardware_version": {
              "type": "string"
            },
            "model_id": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

UserRegistry

Manage users.

Expand Collapse

get

/users

List users of the network.

Expand Collapse

This method is typically restricted to admins only.

Request Parameters
Field Type Required Description
field_mask string The names of the user fields that should be returned.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
deleted boolean Only return recently deleted users.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "users": {
    "items": {
      "description": "User is the message that defines a user on the network.",
      "properties": {
        "admin": {
          "description": "This user is an admin.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by other admins.",
          "type": "boolean"
        },
        "application_limit": {
          "description": "The maximum number of applications of the user.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "attributes": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value attributes for this users. Typically used for storing integration-specific data.",
          "type": "object"
        },
        "client_limit": {
          "description": "The maximum number of clients of the user.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "console_preferences": {
          "description": "UserConsolePreferences is the message that defines the user preferences for the Console.",
          "properties": {
            "console_theme": {
              "default": "CONSOLE_THEME_SYSTEM",
              "description": "ConsoleTheme is the theme of the Console.\n\n - CONSOLE_THEME_SYSTEM: The user prefers the system mode.\n - CONSOLE_THEME_LIGHT: The user prefers the light mode.\n - CONSOLE_THEME_DARK: The user prefers the dark mode.",
              "enum": [
                "CONSOLE_THEME_SYSTEM",
                "CONSOLE_THEME_LIGHT",
                "CONSOLE_THEME_DARK"
              ],
              "type": "string"
            },
            "dashboard_layouts": {
              "properties": {
                "api_key": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "application": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "collaborator": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "end_device": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "gateway": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "organization": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "overview": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                },
                "user": {
                  "default": "DASHBOARD_LAYOUT_TABLE",
                  "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                  "enum": [
                    "DASHBOARD_LAYOUT_TABLE",
                    "DASHBOARD_LAYOUT_LIST",
                    "DASHBOARD_LAYOUT_GRID"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "sort_by": {
              "description": "SortBy defines the field to which the Console will sort the display of entities.",
              "properties": {
                "api_key": {
                  "type": "string"
                },
                "application": {
                  "type": "string"
                },
                "collaborator": {
                  "type": "string"
                },
                "end_device": {
                  "type": "string"
                },
                "gateway": {
                  "type": "string"
                },
                "organization": {
                  "type": "string"
                },
                "user": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "tutorials": {
              "properties": {
                "seen": {
                  "items": {
                    "default": "TUTORIAL_UNKNOWN",
                    "description": "Tutorial is a set of possible tutorials in the Console.",
                    "enum": [
                      "TUTORIAL_UNKNOWN",
                      "TUTORIAL_LIVE_DATA_SPLIT_VIEW",
                      "TUTORIAL_LORAWAN_STARTER_USER"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "contact_info": {
          "description": "Contact information for this user. Typically used to indicate who to contact with security/billing questions about the user.\nThis field is deprecated.",
          "items": {
            "properties": {
              "contact_method": {
                "default": "CONTACT_METHOD_OTHER",
                "enum": [
                  "CONTACT_METHOD_OTHER",
                  "CONTACT_METHOD_EMAIL",
                  "CONTACT_METHOD_PHONE"
                ],
                "type": "string"
              },
              "contact_type": {
                "default": "CONTACT_TYPE_OTHER",
                "enum": [
                  "CONTACT_TYPE_OTHER",
                  "CONTACT_TYPE_ABUSE",
                  "CONTACT_TYPE_BILLING",
                  "CONTACT_TYPE_TECHNICAL"
                ],
                "type": "string"
              },
              "public": {
                "type": "boolean"
              },
              "validated_at": {
                "format": "date-time",
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "created_at": {
          "description": "When the user was created. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "deleted_at": {
          "description": "When the user was deleted. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A description for the user. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "email_notification_preferences": {
          "description": "EmailNotificationPreferences is the message that defines the types of notifications for which the user wants to receive an email.",
          "properties": {
            "types": {
              "items": {
                "default": "UNKNOWN",
                "enum": [
                  "UNKNOWN",
                  "API_KEY_CREATED",
                  "API_KEY_CHANGED",
                  "CLIENT_REQUESTED",
                  "COLLABORATOR_CHANGED",
                  "ENTITY_STATE_CHANGED",
                  "INVITATION",
                  "LOGIN_TOKEN",
                  "PASSWORD_CHANGED",
                  "TEMPORARY_PASSWORD",
                  "USER_REQUESTED",
                  "VALIDATE",
                  "SUPPORT_ACCESS_REQUESTED"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "gateway_limit": {
          "description": "The maximum number of gateways of the user.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "name": {
          "description": "The name of the user. This information is public and can be seen by any authenticated user in the network.",
          "type": "string"
        },
        "organization_limit": {
          "description": "The maximum number of organizations of the user.\nThis field can only be modified by admins.",
          "format": "uint64",
          "type": "string"
        },
        "password": {
          "description": "The password field is only considered when creating a user.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the UpdatePassword method of the UserRegistry service for more information.",
          "type": "string"
        },
        "password_updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "primary_email_address": {
          "description": "Primary email address that can be used for logging in.\nThis address is not public, use contact_info for that.",
          "type": "string"
        },
        "primary_email_address_validated_at": {
          "description": "When the primary email address was validated. Note that email address validation is not required on all networks.",
          "format": "date-time",
          "type": "string"
        },
        "profile_picture": {
          "properties": {
            "embedded": {
              "properties": {
                "data": {
                  "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                  "format": "byte",
                  "type": "string"
                },
                "mime_type": {
                  "description": "MIME type of the picture.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "sizes": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "URLs of the picture for different sizes, if available on a CDN.",
              "type": "object"
            }
          },
          "type": "object"
        },
        "require_password_update": {
          "type": "boolean"
        },
        "state": {
          "default": "STATE_REQUESTED",
          "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
          "enum": [
            "STATE_REQUESTED",
            "STATE_APPROVED",
            "STATE_REJECTED",
            "STATE_FLAGGED",
            "STATE_SUSPENDED"
          ],
          "type": "string"
        },
        "state_description": {
          "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
          "type": "string"
        },
        "temporary_password": {
          "description": "The temporary password can only be used to update a user's password; never returned on API calls.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the CreateTemporaryPassword method of the UserRegistry service for more information.",
          "type": "string"
        },
        "temporary_password_created_at": {
          "format": "date-time",
          "type": "string"
        },
        "temporary_password_expires_at": {
          "format": "date-time",
          "type": "string"
        },
        "universal_rights": {
          "description": "Universal rights are capable of restricting the user's interactions with the API, be it an admin or not.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "updated_at": {
          "description": "When the user was last updated. This information is public and can be seen by any authenticated user in the network.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users

Register a new user.

Expand Collapse

This method may be restricted by network settings.

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "invitation_token": {
    "description": "The invitation token that was sent to the user (some networks require an invitation in order to register new users).",
    "type": "string"
  },
  "user": {
    "description": "User is the message that defines a user on the network.",
    "properties": {
      "admin": {
        "description": "This user is an admin.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by other admins.",
        "type": "boolean"
      },
      "application_limit": {
        "description": "The maximum number of applications of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this users. Typically used for storing integration-specific data.",
        "type": "object"
      },
      "client_limit": {
        "description": "The maximum number of clients of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "console_preferences": {
        "description": "UserConsolePreferences is the message that defines the user preferences for the Console.",
        "properties": {
          "console_theme": {
            "default": "CONSOLE_THEME_SYSTEM",
            "description": "ConsoleTheme is the theme of the Console.\n\n - CONSOLE_THEME_SYSTEM: The user prefers the system mode.\n - CONSOLE_THEME_LIGHT: The user prefers the light mode.\n - CONSOLE_THEME_DARK: The user prefers the dark mode.",
            "enum": [
              "CONSOLE_THEME_SYSTEM",
              "CONSOLE_THEME_LIGHT",
              "CONSOLE_THEME_DARK"
            ],
            "type": "string"
          },
          "dashboard_layouts": {
            "properties": {
              "api_key": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "application": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "collaborator": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "end_device": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "gateway": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "organization": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "overview": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "user": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "sort_by": {
            "description": "SortBy defines the field to which the Console will sort the display of entities.",
            "properties": {
              "api_key": {
                "type": "string"
              },
              "application": {
                "type": "string"
              },
              "collaborator": {
                "type": "string"
              },
              "end_device": {
                "type": "string"
              },
              "gateway": {
                "type": "string"
              },
              "organization": {
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "tutorials": {
            "properties": {
              "seen": {
                "items": {
                  "default": "TUTORIAL_UNKNOWN",
                  "description": "Tutorial is a set of possible tutorials in the Console.",
                  "enum": [
                    "TUTORIAL_UNKNOWN",
                    "TUTORIAL_LIVE_DATA_SPLIT_VIEW",
                    "TUTORIAL_LORAWAN_STARTER_USER"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this user. Typically used to indicate who to contact with security/billing questions about the user.\nThis field is deprecated.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the user was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the user was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the user. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "email_notification_preferences": {
        "description": "EmailNotificationPreferences is the message that defines the types of notifications for which the user wants to receive an email.",
        "properties": {
          "types": {
            "items": {
              "default": "UNKNOWN",
              "enum": [
                "UNKNOWN",
                "API_KEY_CREATED",
                "API_KEY_CHANGED",
                "CLIENT_REQUESTED",
                "COLLABORATOR_CHANGED",
                "ENTITY_STATE_CHANGED",
                "INVITATION",
                "LOGIN_TOKEN",
                "PASSWORD_CHANGED",
                "TEMPORARY_PASSWORD",
                "USER_REQUESTED",
                "VALIDATE",
                "SUPPORT_ACCESS_REQUESTED"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "gateway_limit": {
        "description": "The maximum number of gateways of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": {
        "description": "The name of the user. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "organization_limit": {
        "description": "The maximum number of organizations of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "password": {
        "description": "The password field is only considered when creating a user.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the UpdatePassword method of the UserRegistry service for more information.",
        "type": "string"
      },
      "password_updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "primary_email_address": {
        "description": "Primary email address that can be used for logging in.\nThis address is not public, use contact_info for that.",
        "type": "string"
      },
      "primary_email_address_validated_at": {
        "description": "When the primary email address was validated. Note that email address validation is not required on all networks.",
        "format": "date-time",
        "type": "string"
      },
      "profile_picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "require_password_update": {
        "type": "boolean"
      },
      "state": {
        "default": "STATE_REQUESTED",
        "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
        "enum": [
          "STATE_REQUESTED",
          "STATE_APPROVED",
          "STATE_REJECTED",
          "STATE_FLAGGED",
          "STATE_SUSPENDED"
        ],
        "type": "string"
      },
      "state_description": {
        "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
        "type": "string"
      },
      "temporary_password": {
        "description": "The temporary password can only be used to update a user's password; never returned on API calls.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the CreateTemporaryPassword method of the UserRegistry service for more information.",
        "type": "string"
      },
      "temporary_password_created_at": {
        "format": "date-time",
        "type": "string"
      },
      "temporary_password_expires_at": {
        "format": "date-time",
        "type": "string"
      },
      "universal_rights": {
        "description": "Universal rights are capable of restricting the user's interactions with the API, be it an admin or not.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "updated_at": {
        "description": "When the user was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "admin": {
    "description": "This user is an admin.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by other admins.",
    "type": "boolean"
  },
  "application_limit": {
    "description": "The maximum number of applications of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this users. Typically used for storing integration-specific data.",
    "type": "object"
  },
  "client_limit": {
    "description": "The maximum number of clients of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "console_preferences": {
    "description": "UserConsolePreferences is the message that defines the user preferences for the Console.",
    "properties": {
      "console_theme": {
        "default": "CONSOLE_THEME_SYSTEM",
        "description": "ConsoleTheme is the theme of the Console.\n\n - CONSOLE_THEME_SYSTEM: The user prefers the system mode.\n - CONSOLE_THEME_LIGHT: The user prefers the light mode.\n - CONSOLE_THEME_DARK: The user prefers the dark mode.",
        "enum": [
          "CONSOLE_THEME_SYSTEM",
          "CONSOLE_THEME_LIGHT",
          "CONSOLE_THEME_DARK"
        ],
        "type": "string"
      },
      "dashboard_layouts": {
        "properties": {
          "api_key": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "application": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "collaborator": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "end_device": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "gateway": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "organization": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "overview": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "user": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "sort_by": {
        "description": "SortBy defines the field to which the Console will sort the display of entities.",
        "properties": {
          "api_key": {
            "type": "string"
          },
          "application": {
            "type": "string"
          },
          "collaborator": {
            "type": "string"
          },
          "end_device": {
            "type": "string"
          },
          "gateway": {
            "type": "string"
          },
          "organization": {
            "type": "string"
          },
          "user": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "tutorials": {
        "properties": {
          "seen": {
            "items": {
              "default": "TUTORIAL_UNKNOWN",
              "description": "Tutorial is a set of possible tutorials in the Console.",
              "enum": [
                "TUTORIAL_UNKNOWN",
                "TUTORIAL_LIVE_DATA_SPLIT_VIEW",
                "TUTORIAL_LORAWAN_STARTER_USER"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this user. Typically used to indicate who to contact with security/billing questions about the user.\nThis field is deprecated.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the user was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the user was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the user. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "email_notification_preferences": {
    "description": "EmailNotificationPreferences is the message that defines the types of notifications for which the user wants to receive an email.",
    "properties": {
      "types": {
        "items": {
          "default": "UNKNOWN",
          "enum": [
            "UNKNOWN",
            "API_KEY_CREATED",
            "API_KEY_CHANGED",
            "CLIENT_REQUESTED",
            "COLLABORATOR_CHANGED",
            "ENTITY_STATE_CHANGED",
            "INVITATION",
            "LOGIN_TOKEN",
            "PASSWORD_CHANGED",
            "TEMPORARY_PASSWORD",
            "USER_REQUESTED",
            "VALIDATE",
            "SUPPORT_ACCESS_REQUESTED"
          ],
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "gateway_limit": {
    "description": "The maximum number of gateways of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      },
      "user_id": {
        "description": "This ID shares namespace with organization IDs.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the user. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "organization_limit": {
    "description": "The maximum number of organizations of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "password": {
    "description": "The password field is only considered when creating a user.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the UpdatePassword method of the UserRegistry service for more information.",
    "type": "string"
  },
  "password_updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "primary_email_address": {
    "description": "Primary email address that can be used for logging in.\nThis address is not public, use contact_info for that.",
    "type": "string"
  },
  "primary_email_address_validated_at": {
    "description": "When the primary email address was validated. Note that email address validation is not required on all networks.",
    "format": "date-time",
    "type": "string"
  },
  "profile_picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "require_password_update": {
    "type": "boolean"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "temporary_password": {
    "description": "The temporary password can only be used to update a user's password; never returned on API calls.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the CreateTemporaryPassword method of the UserRegistry service for more information.",
    "type": "string"
  },
  "temporary_password_created_at": {
    "format": "date-time",
    "type": "string"
  },
  "temporary_password_expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "universal_rights": {
    "description": "Universal rights are capable of restricting the user's interactions with the API, be it an admin or not.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "description": "When the user was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/users/{user.ids.user_id}

Update the user, changing the fields specified by the field mask to the provided values.

Expand Collapse

This method can not be used to change the password, see the UpdatePassword method for that.

Request Parameters
Field Type Required Description
user.ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "field_mask": {
    "description": "The names of the user fields that should be updated.",
    "type": "string"
  },
  "user": {
    "description": "User is the message that defines a user on the network.",
    "properties": {
      "admin": {
        "description": "This user is an admin.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by other admins.",
        "type": "boolean"
      },
      "application_limit": {
        "description": "The maximum number of applications of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "attributes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Key-value attributes for this users. Typically used for storing integration-specific data.",
        "type": "object"
      },
      "client_limit": {
        "description": "The maximum number of clients of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "console_preferences": {
        "description": "UserConsolePreferences is the message that defines the user preferences for the Console.",
        "properties": {
          "console_theme": {
            "default": "CONSOLE_THEME_SYSTEM",
            "description": "ConsoleTheme is the theme of the Console.\n\n - CONSOLE_THEME_SYSTEM: The user prefers the system mode.\n - CONSOLE_THEME_LIGHT: The user prefers the light mode.\n - CONSOLE_THEME_DARK: The user prefers the dark mode.",
            "enum": [
              "CONSOLE_THEME_SYSTEM",
              "CONSOLE_THEME_LIGHT",
              "CONSOLE_THEME_DARK"
            ],
            "type": "string"
          },
          "dashboard_layouts": {
            "properties": {
              "api_key": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "application": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "collaborator": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "end_device": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "gateway": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "organization": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "overview": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              },
              "user": {
                "default": "DASHBOARD_LAYOUT_TABLE",
                "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
                "enum": [
                  "DASHBOARD_LAYOUT_TABLE",
                  "DASHBOARD_LAYOUT_LIST",
                  "DASHBOARD_LAYOUT_GRID"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "sort_by": {
            "description": "SortBy defines the field to which the Console will sort the display of entities.",
            "properties": {
              "api_key": {
                "type": "string"
              },
              "application": {
                "type": "string"
              },
              "collaborator": {
                "type": "string"
              },
              "end_device": {
                "type": "string"
              },
              "gateway": {
                "type": "string"
              },
              "organization": {
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "tutorials": {
            "properties": {
              "seen": {
                "items": {
                  "default": "TUTORIAL_UNKNOWN",
                  "description": "Tutorial is a set of possible tutorials in the Console.",
                  "enum": [
                    "TUTORIAL_UNKNOWN",
                    "TUTORIAL_LIVE_DATA_SPLIT_VIEW",
                    "TUTORIAL_LORAWAN_STARTER_USER"
                  ],
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "contact_info": {
        "description": "Contact information for this user. Typically used to indicate who to contact with security/billing questions about the user.\nThis field is deprecated.",
        "items": {
          "properties": {
            "contact_method": {
              "default": "CONTACT_METHOD_OTHER",
              "enum": [
                "CONTACT_METHOD_OTHER",
                "CONTACT_METHOD_EMAIL",
                "CONTACT_METHOD_PHONE"
              ],
              "type": "string"
            },
            "contact_type": {
              "default": "CONTACT_TYPE_OTHER",
              "enum": [
                "CONTACT_TYPE_OTHER",
                "CONTACT_TYPE_ABUSE",
                "CONTACT_TYPE_BILLING",
                "CONTACT_TYPE_TECHNICAL"
              ],
              "type": "string"
            },
            "public": {
              "type": "boolean"
            },
            "validated_at": {
              "format": "date-time",
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "created_at": {
        "description": "When the user was created. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "deleted_at": {
        "description": "When the user was deleted. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      },
      "description": {
        "description": "A description for the user. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "email_notification_preferences": {
        "description": "EmailNotificationPreferences is the message that defines the types of notifications for which the user wants to receive an email.",
        "properties": {
          "types": {
            "items": {
              "default": "UNKNOWN",
              "enum": [
                "UNKNOWN",
                "API_KEY_CREATED",
                "API_KEY_CHANGED",
                "CLIENT_REQUESTED",
                "COLLABORATOR_CHANGED",
                "ENTITY_STATE_CHANGED",
                "INVITATION",
                "LOGIN_TOKEN",
                "PASSWORD_CHANGED",
                "TEMPORARY_PASSWORD",
                "USER_REQUESTED",
                "VALIDATE",
                "SUPPORT_ACCESS_REQUESTED"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "gateway_limit": {
        "description": "The maximum number of gateways of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "ids": {
        "description": "The identifiers of the user. These are public and can be seen by any authenticated user in the network.",
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          }
        },
        "title": "The identifiers of the user. These are public and can be seen by any authenticated user in the network.",
        "type": "object"
      },
      "name": {
        "description": "The name of the user. This information is public and can be seen by any authenticated user in the network.",
        "type": "string"
      },
      "organization_limit": {
        "description": "The maximum number of organizations of the user.\nThis field can only be modified by admins.",
        "format": "uint64",
        "type": "string"
      },
      "password": {
        "description": "The password field is only considered when creating a user.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the UpdatePassword method of the UserRegistry service for more information.",
        "type": "string"
      },
      "password_updated_at": {
        "format": "date-time",
        "type": "string"
      },
      "primary_email_address": {
        "description": "Primary email address that can be used for logging in.\nThis address is not public, use contact_info for that.",
        "type": "string"
      },
      "primary_email_address_validated_at": {
        "description": "When the primary email address was validated. Note that email address validation is not required on all networks.",
        "format": "date-time",
        "type": "string"
      },
      "profile_picture": {
        "properties": {
          "embedded": {
            "properties": {
              "data": {
                "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
                "format": "byte",
                "type": "string"
              },
              "mime_type": {
                "description": "MIME type of the picture.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "sizes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "URLs of the picture for different sizes, if available on a CDN.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "require_password_update": {
        "type": "boolean"
      },
      "state": {
        "default": "STATE_REQUESTED",
        "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
        "enum": [
          "STATE_REQUESTED",
          "STATE_APPROVED",
          "STATE_REJECTED",
          "STATE_FLAGGED",
          "STATE_SUSPENDED"
        ],
        "type": "string"
      },
      "state_description": {
        "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
        "type": "string"
      },
      "temporary_password": {
        "description": "The temporary password can only be used to update a user's password; never returned on API calls.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the CreateTemporaryPassword method of the UserRegistry service for more information.",
        "type": "string"
      },
      "temporary_password_created_at": {
        "format": "date-time",
        "type": "string"
      },
      "temporary_password_expires_at": {
        "format": "date-time",
        "type": "string"
      },
      "universal_rights": {
        "description": "Universal rights are capable of restricting the user's interactions with the API, be it an admin or not.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "updated_at": {
        "description": "When the user was last updated. This information is public and can be seen by any authenticated user in the network.",
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "admin": {
    "description": "This user is an admin.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by other admins.",
    "type": "boolean"
  },
  "application_limit": {
    "description": "The maximum number of applications of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this users. Typically used for storing integration-specific data.",
    "type": "object"
  },
  "client_limit": {
    "description": "The maximum number of clients of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "console_preferences": {
    "description": "UserConsolePreferences is the message that defines the user preferences for the Console.",
    "properties": {
      "console_theme": {
        "default": "CONSOLE_THEME_SYSTEM",
        "description": "ConsoleTheme is the theme of the Console.\n\n - CONSOLE_THEME_SYSTEM: The user prefers the system mode.\n - CONSOLE_THEME_LIGHT: The user prefers the light mode.\n - CONSOLE_THEME_DARK: The user prefers the dark mode.",
        "enum": [
          "CONSOLE_THEME_SYSTEM",
          "CONSOLE_THEME_LIGHT",
          "CONSOLE_THEME_DARK"
        ],
        "type": "string"
      },
      "dashboard_layouts": {
        "properties": {
          "api_key": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "application": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "collaborator": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "end_device": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "gateway": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "organization": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "overview": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "user": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "sort_by": {
        "description": "SortBy defines the field to which the Console will sort the display of entities.",
        "properties": {
          "api_key": {
            "type": "string"
          },
          "application": {
            "type": "string"
          },
          "collaborator": {
            "type": "string"
          },
          "end_device": {
            "type": "string"
          },
          "gateway": {
            "type": "string"
          },
          "organization": {
            "type": "string"
          },
          "user": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "tutorials": {
        "properties": {
          "seen": {
            "items": {
              "default": "TUTORIAL_UNKNOWN",
              "description": "Tutorial is a set of possible tutorials in the Console.",
              "enum": [
                "TUTORIAL_UNKNOWN",
                "TUTORIAL_LIVE_DATA_SPLIT_VIEW",
                "TUTORIAL_LORAWAN_STARTER_USER"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this user. Typically used to indicate who to contact with security/billing questions about the user.\nThis field is deprecated.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the user was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the user was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the user. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "email_notification_preferences": {
    "description": "EmailNotificationPreferences is the message that defines the types of notifications for which the user wants to receive an email.",
    "properties": {
      "types": {
        "items": {
          "default": "UNKNOWN",
          "enum": [
            "UNKNOWN",
            "API_KEY_CREATED",
            "API_KEY_CHANGED",
            "CLIENT_REQUESTED",
            "COLLABORATOR_CHANGED",
            "ENTITY_STATE_CHANGED",
            "INVITATION",
            "LOGIN_TOKEN",
            "PASSWORD_CHANGED",
            "TEMPORARY_PASSWORD",
            "USER_REQUESTED",
            "VALIDATE",
            "SUPPORT_ACCESS_REQUESTED"
          ],
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "gateway_limit": {
    "description": "The maximum number of gateways of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      },
      "user_id": {
        "description": "This ID shares namespace with organization IDs.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the user. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "organization_limit": {
    "description": "The maximum number of organizations of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "password": {
    "description": "The password field is only considered when creating a user.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the UpdatePassword method of the UserRegistry service for more information.",
    "type": "string"
  },
  "password_updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "primary_email_address": {
    "description": "Primary email address that can be used for logging in.\nThis address is not public, use contact_info for that.",
    "type": "string"
  },
  "primary_email_address_validated_at": {
    "description": "When the primary email address was validated. Note that email address validation is not required on all networks.",
    "format": "date-time",
    "type": "string"
  },
  "profile_picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "require_password_update": {
    "type": "boolean"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "temporary_password": {
    "description": "The temporary password can only be used to update a user's password; never returned on API calls.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the CreateTemporaryPassword method of the UserRegistry service for more information.",
    "type": "string"
  },
  "temporary_password_created_at": {
    "format": "date-time",
    "type": "string"
  },
  "temporary_password_expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "universal_rights": {
    "description": "Universal rights are capable of restricting the user's interactions with the API, be it an admin or not.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "description": "When the user was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/users/{user_ids.user_id}

Get the user with the given identifiers, selecting the fields given by the field mask.

Expand Collapse

The method may return more or less fields, depending on the rights of the caller.

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
field_mask string The names of the user fields that should be returned.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "admin": {
    "description": "This user is an admin.\nThis information is public and can be seen by any authenticated user in the network.\nThis field can only be modified by other admins.",
    "type": "boolean"
  },
  "application_limit": {
    "description": "The maximum number of applications of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "attributes": {
    "additionalProperties": {
      "type": "string"
    },
    "description": "Key-value attributes for this users. Typically used for storing integration-specific data.",
    "type": "object"
  },
  "client_limit": {
    "description": "The maximum number of clients of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "console_preferences": {
    "description": "UserConsolePreferences is the message that defines the user preferences for the Console.",
    "properties": {
      "console_theme": {
        "default": "CONSOLE_THEME_SYSTEM",
        "description": "ConsoleTheme is the theme of the Console.\n\n - CONSOLE_THEME_SYSTEM: The user prefers the system mode.\n - CONSOLE_THEME_LIGHT: The user prefers the light mode.\n - CONSOLE_THEME_DARK: The user prefers the dark mode.",
        "enum": [
          "CONSOLE_THEME_SYSTEM",
          "CONSOLE_THEME_LIGHT",
          "CONSOLE_THEME_DARK"
        ],
        "type": "string"
      },
      "dashboard_layouts": {
        "properties": {
          "api_key": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "application": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "collaborator": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "end_device": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "gateway": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "organization": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "overview": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          },
          "user": {
            "default": "DASHBOARD_LAYOUT_TABLE",
            "description": "DashboardLayout is a set of possible layout values to be used in the Console.",
            "enum": [
              "DASHBOARD_LAYOUT_TABLE",
              "DASHBOARD_LAYOUT_LIST",
              "DASHBOARD_LAYOUT_GRID"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "sort_by": {
        "description": "SortBy defines the field to which the Console will sort the display of entities.",
        "properties": {
          "api_key": {
            "type": "string"
          },
          "application": {
            "type": "string"
          },
          "collaborator": {
            "type": "string"
          },
          "end_device": {
            "type": "string"
          },
          "gateway": {
            "type": "string"
          },
          "organization": {
            "type": "string"
          },
          "user": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "tutorials": {
        "properties": {
          "seen": {
            "items": {
              "default": "TUTORIAL_UNKNOWN",
              "description": "Tutorial is a set of possible tutorials in the Console.",
              "enum": [
                "TUTORIAL_UNKNOWN",
                "TUTORIAL_LIVE_DATA_SPLIT_VIEW",
                "TUTORIAL_LORAWAN_STARTER_USER"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "contact_info": {
    "description": "Contact information for this user. Typically used to indicate who to contact with security/billing questions about the user.\nThis field is deprecated.",
    "items": {
      "properties": {
        "contact_method": {
          "default": "CONTACT_METHOD_OTHER",
          "enum": [
            "CONTACT_METHOD_OTHER",
            "CONTACT_METHOD_EMAIL",
            "CONTACT_METHOD_PHONE"
          ],
          "type": "string"
        },
        "contact_type": {
          "default": "CONTACT_TYPE_OTHER",
          "enum": [
            "CONTACT_TYPE_OTHER",
            "CONTACT_TYPE_ABUSE",
            "CONTACT_TYPE_BILLING",
            "CONTACT_TYPE_TECHNICAL"
          ],
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "validated_at": {
          "format": "date-time",
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "created_at": {
    "description": "When the user was created. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "deleted_at": {
    "description": "When the user was deleted. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  },
  "description": {
    "description": "A description for the user. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "email_notification_preferences": {
    "description": "EmailNotificationPreferences is the message that defines the types of notifications for which the user wants to receive an email.",
    "properties": {
      "types": {
        "items": {
          "default": "UNKNOWN",
          "enum": [
            "UNKNOWN",
            "API_KEY_CREATED",
            "API_KEY_CHANGED",
            "CLIENT_REQUESTED",
            "COLLABORATOR_CHANGED",
            "ENTITY_STATE_CHANGED",
            "INVITATION",
            "LOGIN_TOKEN",
            "PASSWORD_CHANGED",
            "TEMPORARY_PASSWORD",
            "USER_REQUESTED",
            "VALIDATE",
            "SUPPORT_ACCESS_REQUESTED"
          ],
          "type": "string"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "gateway_limit": {
    "description": "The maximum number of gateways of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      },
      "user_id": {
        "description": "This ID shares namespace with organization IDs.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": {
    "description": "The name of the user. This information is public and can be seen by any authenticated user in the network.",
    "type": "string"
  },
  "organization_limit": {
    "description": "The maximum number of organizations of the user.\nThis field can only be modified by admins.",
    "format": "uint64",
    "type": "string"
  },
  "password": {
    "description": "The password field is only considered when creating a user.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the UpdatePassword method of the UserRegistry service for more information.",
    "type": "string"
  },
  "password_updated_at": {
    "format": "date-time",
    "type": "string"
  },
  "primary_email_address": {
    "description": "Primary email address that can be used for logging in.\nThis address is not public, use contact_info for that.",
    "type": "string"
  },
  "primary_email_address_validated_at": {
    "description": "When the primary email address was validated. Note that email address validation is not required on all networks.",
    "format": "date-time",
    "type": "string"
  },
  "profile_picture": {
    "properties": {
      "embedded": {
        "properties": {
          "data": {
            "description": "Picture data. A data URI can be constructed as follows:\n`data:\u003cmime_type\u003e;base64,\u003cdata\u003e`.",
            "format": "byte",
            "type": "string"
          },
          "mime_type": {
            "description": "MIME type of the picture.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "sizes": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "URLs of the picture for different sizes, if available on a CDN.",
        "type": "object"
      }
    },
    "type": "object"
  },
  "require_password_update": {
    "type": "boolean"
  },
  "state": {
    "default": "STATE_REQUESTED",
    "description": "State enum defines states that an entity can be in.\n\n - STATE_REQUESTED: Denotes that the entity has been requested and is pending review by an admin.\n - STATE_APPROVED: Denotes that the entity has been reviewed and approved by an admin.\n - STATE_REJECTED: Denotes that the entity has been reviewed and rejected by an admin.\n - STATE_FLAGGED: Denotes that the entity has been flagged and is pending review by an admin.\n - STATE_SUSPENDED: Denotes that the entity has been reviewed and suspended by an admin.",
    "enum": [
      "STATE_REQUESTED",
      "STATE_APPROVED",
      "STATE_REJECTED",
      "STATE_FLAGGED",
      "STATE_SUSPENDED"
    ],
    "type": "string"
  },
  "state_description": {
    "description": "A description for the state field.\nThis field can only be modified by admins, and should typically only be updated\nwhen also updating `state`.",
    "type": "string"
  },
  "temporary_password": {
    "description": "The temporary password can only be used to update a user's password; never returned on API calls.\nIt is not returned on API calls, and can not be updated by updating the User.\nSee the CreateTemporaryPassword method of the UserRegistry service for more information.",
    "type": "string"
  },
  "temporary_password_created_at": {
    "format": "date-time",
    "type": "string"
  },
  "temporary_password_expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "universal_rights": {
    "description": "Universal rights are capable of restricting the user's interactions with the API, be it an admin or not.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "description": "When the user was last updated. This information is public and can be seen by any authenticated user in the network.",
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/users/{user_ids.user_id}/password

Update the password of the user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "new": {
    "type": "string"
  },
  "old": {
    "type": "string"
  },
  "revoke_all_access": {
    "description": "Revoke active sessions and access tokens of user if true. To be used if credentials are suspected to be compromised.",
    "type": "boolean"
  },
  "user_ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users/{user_ids.user_id}/temporary_password

Create a temporary password that can be used for updating a forgotten password.

Expand Collapse

The generated password is sent to the user's email address.

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_id}

Delete the user.

Expand Collapse

This may not release the user ID for reuse.

Request Parameters
Field Type Required Description
user_id string true This ID shares namespace with organization IDs.
email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_id}/purge

Purge the user.

Expand Collapse

This will release the user ID for reuse. The user is responsible for clearing data from any (external) integrations that may store and expose data by user or organization ID.

Request Parameters
Field Type Required Description
user_id string true This ID shares namespace with organization IDs.
email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users/{user_id}/restore

Restore a recently deleted user.

Expand Collapse

Deployment configuration may specify if, and for how long after deletion, entities can be restored.

Request Parameters
Field Type Required Description
user_id string true This ID shares namespace with organization IDs.
email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

UserAccess

Manage user access.

Expand Collapse

get

/users/{user_ids.user_id}/api-keys

List the API keys for this user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
order string Order the results by this field path. Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "api_keys": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "expires_at": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
          "type": "string"
        },
        "key": {
          "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
          "type": "string"
        },
        "name": {
          "description": "User-defined (friendly) name for the API key.",
          "type": "string"
        },
        "rights": {
          "description": "Rights that are granted to this API key.",
          "items": {
            "default": "right_invalid",
            "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
            "enum": [
              "right_invalid",
              "RIGHT_USER_INFO",
              "RIGHT_USER_SETTINGS_BASIC",
              "RIGHT_USER_LIST",
              "RIGHT_USER_CREATE",
              "RIGHT_USER_SETTINGS_API_KEYS",
              "RIGHT_USER_DELETE",
              "RIGHT_USER_PURGE",
              "RIGHT_USER_AUTHORIZED_CLIENTS",
              "RIGHT_USER_APPLICATIONS_LIST",
              "RIGHT_USER_APPLICATIONS_CREATE",
              "RIGHT_USER_GATEWAYS_LIST",
              "RIGHT_USER_GATEWAYS_CREATE",
              "RIGHT_USER_CLIENTS_LIST",
              "RIGHT_USER_CLIENTS_CREATE",
              "RIGHT_USER_ORGANIZATIONS_LIST",
              "RIGHT_USER_ORGANIZATIONS_CREATE",
              "RIGHT_USER_NOTIFICATIONS_READ",
              "RIGHT_USER_ALL",
              "RIGHT_APPLICATION_INFO",
              "RIGHT_APPLICATION_SETTINGS_BASIC",
              "RIGHT_APPLICATION_SETTINGS_API_KEYS",
              "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
              "RIGHT_APPLICATION_SETTINGS_PACKAGES",
              "RIGHT_APPLICATION_DELETE",
              "RIGHT_APPLICATION_PURGE",
              "RIGHT_APPLICATION_DEVICES_READ",
              "RIGHT_APPLICATION_DEVICES_WRITE",
              "RIGHT_APPLICATION_DEVICES_READ_KEYS",
              "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
              "RIGHT_APPLICATION_TRAFFIC_READ",
              "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
              "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
              "RIGHT_APPLICATION_LINK",
              "RIGHT_APPLICATION_ALL",
              "RIGHT_CLIENT_ALL",
              "RIGHT_CLIENT_INFO",
              "RIGHT_CLIENT_SETTINGS_BASIC",
              "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
              "RIGHT_CLIENT_DELETE",
              "RIGHT_CLIENT_PURGE",
              "RIGHT_GATEWAY_INFO",
              "RIGHT_GATEWAY_SETTINGS_BASIC",
              "RIGHT_GATEWAY_SETTINGS_API_KEYS",
              "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
              "RIGHT_GATEWAY_DELETE",
              "RIGHT_GATEWAY_PURGE",
              "RIGHT_GATEWAY_TRAFFIC_READ",
              "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
              "RIGHT_GATEWAY_LINK",
              "RIGHT_GATEWAY_STATUS_READ",
              "RIGHT_GATEWAY_LOCATION_READ",
              "RIGHT_GATEWAY_WRITE_SECRETS",
              "RIGHT_GATEWAY_READ_SECRETS",
              "RIGHT_GATEWAY_ALL",
              "RIGHT_ORGANIZATION_INFO",
              "RIGHT_ORGANIZATION_SETTINGS_BASIC",
              "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
              "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
              "RIGHT_ORGANIZATION_DELETE",
              "RIGHT_ORGANIZATION_PURGE",
              "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
              "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
              "RIGHT_ORGANIZATION_GATEWAYS_LIST",
              "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
              "RIGHT_ORGANIZATION_CLIENTS_LIST",
              "RIGHT_ORGANIZATION_CLIENTS_CREATE",
              "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
              "RIGHT_ORGANIZATION_ALL",
              "RIGHT_SEND_INVITES",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
              "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
              "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
              "RIGHT_AUTHENTICATION_PROVIDER_INFO",
              "RIGHT_AUTHENTICATION_PROVIDER_LIST",
              "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
              "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
              "RIGHT_EXTERNAL_USER_CREATE",
              "RIGHT_EXTERNAL_USER_INFO",
              "RIGHT_EXTERNAL_USER_DELETE",
              "RIGHT_PACKET_BROKER_AGENT_READ",
              "RIGHT_PACKET_BROKER_AGENT_WRITE",
              "RIGHT_TENANT_CONFIGURATION_UPDATE",
              "RIGHT_LABEL_CREATE",
              "RIGHT_LABEL_INFO",
              "RIGHT_LABELS_LIST",
              "RIGHT_LABEL_UPDATE",
              "RIGHT_LABEL_DELETE",
              "RIGHT_LABEL_ASSIGN",
              "RIGHT_ALL"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users/{user_ids.user_id}/api-keys

Create an API key scoped to this user.

Expand Collapse

User API keys can give access to the user itself, as well as any organization, application, gateway and OAuth client this user is a collaborator of.

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "name": {
    "type": "string"
  },
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "user_ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

put

/users/{user_ids.user_id}/api-keys/{api_key.id}

Update the rights of an API key of the user.

Expand Collapse

This method can also be used to delete the API key, by giving it no rights. The caller is required to have all assigned or/and removed rights.

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
api_key.id string true Immutable and unique public identifier for the API key. Generated by the Access Server.
Request Body
Show JSON Schema
{
  "api_key": {
    "properties": {
      "created_at": {
        "format": "date-time",
        "type": "string"
      },
      "expires_at": {
        "format": "date-time",
        "type": "string"
      },
      "key": {
        "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
        "type": "string"
      },
      "name": {
        "description": "User-defined (friendly) name for the API key.",
        "type": "string"
      },
      "rights": {
        "description": "Rights that are granted to this API key.",
        "items": {
          "default": "right_invalid",
          "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
          "enum": [
            "right_invalid",
            "RIGHT_USER_INFO",
            "RIGHT_USER_SETTINGS_BASIC",
            "RIGHT_USER_LIST",
            "RIGHT_USER_CREATE",
            "RIGHT_USER_SETTINGS_API_KEYS",
            "RIGHT_USER_DELETE",
            "RIGHT_USER_PURGE",
            "RIGHT_USER_AUTHORIZED_CLIENTS",
            "RIGHT_USER_APPLICATIONS_LIST",
            "RIGHT_USER_APPLICATIONS_CREATE",
            "RIGHT_USER_GATEWAYS_LIST",
            "RIGHT_USER_GATEWAYS_CREATE",
            "RIGHT_USER_CLIENTS_LIST",
            "RIGHT_USER_CLIENTS_CREATE",
            "RIGHT_USER_ORGANIZATIONS_LIST",
            "RIGHT_USER_ORGANIZATIONS_CREATE",
            "RIGHT_USER_NOTIFICATIONS_READ",
            "RIGHT_USER_ALL",
            "RIGHT_APPLICATION_INFO",
            "RIGHT_APPLICATION_SETTINGS_BASIC",
            "RIGHT_APPLICATION_SETTINGS_API_KEYS",
            "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
            "RIGHT_APPLICATION_SETTINGS_PACKAGES",
            "RIGHT_APPLICATION_DELETE",
            "RIGHT_APPLICATION_PURGE",
            "RIGHT_APPLICATION_DEVICES_READ",
            "RIGHT_APPLICATION_DEVICES_WRITE",
            "RIGHT_APPLICATION_DEVICES_READ_KEYS",
            "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
            "RIGHT_APPLICATION_TRAFFIC_READ",
            "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
            "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
            "RIGHT_APPLICATION_LINK",
            "RIGHT_APPLICATION_ALL",
            "RIGHT_CLIENT_ALL",
            "RIGHT_CLIENT_INFO",
            "RIGHT_CLIENT_SETTINGS_BASIC",
            "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
            "RIGHT_CLIENT_DELETE",
            "RIGHT_CLIENT_PURGE",
            "RIGHT_GATEWAY_INFO",
            "RIGHT_GATEWAY_SETTINGS_BASIC",
            "RIGHT_GATEWAY_SETTINGS_API_KEYS",
            "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
            "RIGHT_GATEWAY_DELETE",
            "RIGHT_GATEWAY_PURGE",
            "RIGHT_GATEWAY_TRAFFIC_READ",
            "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
            "RIGHT_GATEWAY_LINK",
            "RIGHT_GATEWAY_STATUS_READ",
            "RIGHT_GATEWAY_LOCATION_READ",
            "RIGHT_GATEWAY_WRITE_SECRETS",
            "RIGHT_GATEWAY_READ_SECRETS",
            "RIGHT_GATEWAY_ALL",
            "RIGHT_ORGANIZATION_INFO",
            "RIGHT_ORGANIZATION_SETTINGS_BASIC",
            "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
            "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
            "RIGHT_ORGANIZATION_DELETE",
            "RIGHT_ORGANIZATION_PURGE",
            "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
            "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
            "RIGHT_ORGANIZATION_GATEWAYS_LIST",
            "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
            "RIGHT_ORGANIZATION_CLIENTS_LIST",
            "RIGHT_ORGANIZATION_CLIENTS_CREATE",
            "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
            "RIGHT_ORGANIZATION_ALL",
            "RIGHT_SEND_INVITES",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
            "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
            "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
            "RIGHT_AUTHENTICATION_PROVIDER_INFO",
            "RIGHT_AUTHENTICATION_PROVIDER_LIST",
            "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
            "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
            "RIGHT_EXTERNAL_USER_CREATE",
            "RIGHT_EXTERNAL_USER_INFO",
            "RIGHT_EXTERNAL_USER_DELETE",
            "RIGHT_PACKET_BROKER_AGENT_READ",
            "RIGHT_PACKET_BROKER_AGENT_WRITE",
            "RIGHT_TENANT_CONFIGURATION_UPDATE",
            "RIGHT_LABEL_CREATE",
            "RIGHT_LABEL_INFO",
            "RIGHT_LABELS_LIST",
            "RIGHT_LABEL_UPDATE",
            "RIGHT_LABEL_DELETE",
            "RIGHT_LABEL_ASSIGN",
            "RIGHT_ALL"
          ],
          "type": "string"
        },
        "type": "array"
      },
      "updated_at": {
        "format": "date-time",
        "type": "string"
      }
    },
    "type": "object"
  },
  "field_mask": {
    "description": "The names of the api key fields that should be updated.",
    "type": "string"
  },
  "user_ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/api-keys/{key_id}

Delete a single API key of this user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
key_id string true
user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/users/{user_ids.user_id}/api-keys/{key_id}

Get a single API key of this user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
key_id string true Unique public identifier for the API key.
user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "id": {
    "description": "Immutable and unique public identifier for the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "key": {
    "description": "Immutable and unique secret value of the API key.\nGenerated by the Access Server.",
    "type": "string"
  },
  "name": {
    "description": "User-defined (friendly) name for the API key.",
    "type": "string"
  },
  "rights": {
    "description": "Rights that are granted to this API key.",
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users/{user_ids.user_id}/login-tokens

Create a login token that can be used for a one-time login as a user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
skip_email boolean Skip sending the login token to the user by email. This field is only effective when the login token is created by an admin user.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "token": {
    "description": "The token that can be used for logging in as the user.\nThis field is only present if a token was created by an admin user for a non-admin user.",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/users/{user_id}/rights

List the rights the caller has on this user.

Expand Collapse

Request Parameters
Field Type Required Description
user_id string true This ID shares namespace with organization IDs.
email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "rights": {
    "items": {
      "default": "right_invalid",
      "description": "Right is the enum that defines all the different rights to do something in the network.\n\n - RIGHT_USER_INFO: The right to view user information.\n - RIGHT_USER_SETTINGS_BASIC: The right to edit basic user settings.\n - RIGHT_USER_LIST: The right to list users accounts.\n - RIGHT_USER_CREATE: The right to create an user account.\n - RIGHT_USER_SETTINGS_API_KEYS: The right to view and edit user API keys.\n - RIGHT_USER_DELETE: The right to delete user account.\n - RIGHT_USER_PURGE: The right to purge user account.\n - RIGHT_USER_AUTHORIZED_CLIENTS: The right to view and edit authorized OAuth clients of the user.\n - RIGHT_USER_APPLICATIONS_LIST: The right to list applications the user is a collaborator of.\n - RIGHT_USER_APPLICATIONS_CREATE: The right to create an application under the user account.\n - RIGHT_USER_GATEWAYS_LIST: The right to list gateways the user is a collaborator of.\n - RIGHT_USER_GATEWAYS_CREATE: The right to create a gateway under the account of the user.\n - RIGHT_USER_CLIENTS_LIST: The right to list OAuth clients the user is a collaborator of.\n - RIGHT_USER_CLIENTS_CREATE: The right to create an OAuth client under the account of the user.\n - RIGHT_USER_ORGANIZATIONS_LIST: The right to list organizations the user is a member of.\n - RIGHT_USER_ORGANIZATIONS_CREATE: The right to create an organization under the user account.\n - RIGHT_USER_NOTIFICATIONS_READ: The right to read notifications sent to the user.\n - RIGHT_USER_ALL: The pseudo-right for all (current and future) user rights.\n - RIGHT_APPLICATION_INFO: The right to view application information.\n - RIGHT_APPLICATION_SETTINGS_BASIC: The right to edit basic application settings.\n - RIGHT_APPLICATION_SETTINGS_API_KEYS: The right to view and edit application API keys.\n - RIGHT_APPLICATION_SETTINGS_COLLABORATORS: The right to view and edit application collaborators.\n - RIGHT_APPLICATION_SETTINGS_PACKAGES: The right to view and edit application packages and associations.\n - RIGHT_APPLICATION_DELETE: The right to delete application.\n - RIGHT_APPLICATION_PURGE: The right to purge application.\n - RIGHT_APPLICATION_DEVICES_READ: The right to view devices in application.\n - RIGHT_APPLICATION_DEVICES_WRITE: The right to create devices in application.\n - RIGHT_APPLICATION_DEVICES_READ_KEYS: The right to view device keys in application.\nNote that keys may not be stored in a way that supports viewing them.\n - RIGHT_APPLICATION_DEVICES_WRITE_KEYS: The right to edit device keys in application.\n - RIGHT_APPLICATION_TRAFFIC_READ: The right to read application traffic (uplink and downlink).\n - RIGHT_APPLICATION_TRAFFIC_UP_WRITE: The right to write uplink application traffic.\n - RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE: The right to write downlink application traffic.\n - RIGHT_APPLICATION_LINK: The right to link as Application to a Network Server for traffic exchange,\ni.e. read uplink and write downlink (API keys only).\nThis right is typically only given to an Application Server.\nThis right implies RIGHT_APPLICATION_INFO, RIGHT_APPLICATION_TRAFFIC_READ,\nand RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE.\n - RIGHT_APPLICATION_ALL: The pseudo-right for all (current and future) application rights.\n - RIGHT_CLIENT_ALL: The pseudo-right for all (current and future) OAuth client rights.\n - RIGHT_CLIENT_INFO: The right to read client information.\n - RIGHT_CLIENT_SETTINGS_BASIC: The right to edit basic client settings.\n - RIGHT_CLIENT_SETTINGS_COLLABORATORS: The right to view and edit client collaborators.\n - RIGHT_CLIENT_DELETE: The right to delete a client.\n - RIGHT_CLIENT_PURGE: The right to purge a client.\n - RIGHT_GATEWAY_INFO: The right to view gateway information.\n - RIGHT_GATEWAY_SETTINGS_BASIC: The right to edit basic gateway settings.\n - RIGHT_GATEWAY_SETTINGS_API_KEYS: The right to view and edit gateway API keys.\n - RIGHT_GATEWAY_SETTINGS_COLLABORATORS: The right to view and edit gateway collaborators.\n - RIGHT_GATEWAY_DELETE: The right to delete gateway.\n - RIGHT_GATEWAY_PURGE: The right to purge gateway.\n - RIGHT_GATEWAY_TRAFFIC_READ: The right to read gateway traffic.\n - RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE: The right to write downlink gateway traffic.\n - RIGHT_GATEWAY_LINK: The right to link as Gateway to a Gateway Server for traffic exchange,\ni.e. write uplink and read downlink (API keys only)\nThis right is typically only given to a gateway.\nThis right implies RIGHT_GATEWAY_INFO.\n - RIGHT_GATEWAY_STATUS_READ: The right to view gateway status.\n - RIGHT_GATEWAY_LOCATION_READ: The right to view view gateway location.\n - RIGHT_GATEWAY_WRITE_SECRETS: The right to store secrets associated with this gateway.\n - RIGHT_GATEWAY_READ_SECRETS: The right to retrieve secrets associated with this gateway.\n - RIGHT_GATEWAY_ALL: The pseudo-right for all (current and future) gateway rights.\n - RIGHT_ORGANIZATION_INFO: The right to view organization information.\n - RIGHT_ORGANIZATION_SETTINGS_BASIC: The right to edit basic organization settings.\n - RIGHT_ORGANIZATION_SETTINGS_API_KEYS: The right to view and edit organization API keys.\n - RIGHT_ORGANIZATION_SETTINGS_MEMBERS: The right to view and edit organization members.\n - RIGHT_ORGANIZATION_DELETE: The right to delete organization.\n - RIGHT_ORGANIZATION_PURGE: The right to purge organization.\n - RIGHT_ORGANIZATION_APPLICATIONS_LIST: The right to list the applications the organization is a collaborator of.\n - RIGHT_ORGANIZATION_APPLICATIONS_CREATE: The right to create an application under the organization.\n - RIGHT_ORGANIZATION_GATEWAYS_LIST: The right to list the gateways the organization is a collaborator of.\n - RIGHT_ORGANIZATION_GATEWAYS_CREATE: The right to create a gateway under the organization.\n - RIGHT_ORGANIZATION_CLIENTS_LIST: The right to list the OAuth clients the organization is a collaborator of.\n - RIGHT_ORGANIZATION_CLIENTS_CREATE: The right to create an OAuth client under the organization.\n - RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR: The right to add the organization as a collaborator on an existing entity.\n - RIGHT_ORGANIZATION_ALL: The pseudo-right for all (current and future) organization rights.\n - RIGHT_SEND_INVITES: The right to send invites to new users.\nNote that this is not prefixed with \"USER_\"; it is not a right on the user entity.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE: The right to create an alert notification profile.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_INFO: The right to view an alert notification profile information.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_LIST: The right to list the alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE: The right to update an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE: The right to delete an alert notification profiles.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE: The right to create an alert notification receiver.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO: The right to view an alert notification receiver information.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST: The right to list the alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE: The right to update an alert notification receivers.\n - RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE: The right to delete an alert notification receivers.\n - RIGHT_AUTHENTICATION_PROVIDER_CREATE: The right to create an authentication provider.\n - RIGHT_AUTHENTICATION_PROVIDER_INFO: The right to view an authentication provider information.\n - RIGHT_AUTHENTICATION_PROVIDER_LIST: The right to list the authentication providers\n - RIGHT_AUTHENTICATION_PROVIDER_UPDATE: The right to update an authentication providers.\n - RIGHT_AUTHENTICATION_PROVIDER_DELETE: The right to delete an authentication providers.\n - RIGHT_EXTERNAL_USER_CREATE: The right to create an external user.\n - RIGHT_EXTERNAL_USER_INFO: The right to view an external user's information.\n - RIGHT_EXTERNAL_USER_DELETE: The right to delete an external user.\n - RIGHT_PACKET_BROKER_AGENT_READ: The right to read any information related to the PBA.\n - RIGHT_PACKET_BROKER_AGENT_WRITE: The right to perform operations in the PBA.\n - RIGHT_TENANT_CONFIGURATION_UPDATE: The right to update a tenant's configuration.\n - RIGHT_LABEL_CREATE: The right to create a label.\n - RIGHT_LABEL_INFO: The right to view a label's information.\n - RIGHT_LABELS_LIST: The right to list the labels.\n - RIGHT_LABEL_UPDATE: The right to update a label.\n - RIGHT_LABEL_DELETE: The right to delete a label.\n - RIGHT_LABEL_ASSIGN: The right to assign a label to an entity.\n - RIGHT_ALL: The pseudo-right for all (current and future) possible rights.",
      "enum": [
        "right_invalid",
        "RIGHT_USER_INFO",
        "RIGHT_USER_SETTINGS_BASIC",
        "RIGHT_USER_LIST",
        "RIGHT_USER_CREATE",
        "RIGHT_USER_SETTINGS_API_KEYS",
        "RIGHT_USER_DELETE",
        "RIGHT_USER_PURGE",
        "RIGHT_USER_AUTHORIZED_CLIENTS",
        "RIGHT_USER_APPLICATIONS_LIST",
        "RIGHT_USER_APPLICATIONS_CREATE",
        "RIGHT_USER_GATEWAYS_LIST",
        "RIGHT_USER_GATEWAYS_CREATE",
        "RIGHT_USER_CLIENTS_LIST",
        "RIGHT_USER_CLIENTS_CREATE",
        "RIGHT_USER_ORGANIZATIONS_LIST",
        "RIGHT_USER_ORGANIZATIONS_CREATE",
        "RIGHT_USER_NOTIFICATIONS_READ",
        "RIGHT_USER_ALL",
        "RIGHT_APPLICATION_INFO",
        "RIGHT_APPLICATION_SETTINGS_BASIC",
        "RIGHT_APPLICATION_SETTINGS_API_KEYS",
        "RIGHT_APPLICATION_SETTINGS_COLLABORATORS",
        "RIGHT_APPLICATION_SETTINGS_PACKAGES",
        "RIGHT_APPLICATION_DELETE",
        "RIGHT_APPLICATION_PURGE",
        "RIGHT_APPLICATION_DEVICES_READ",
        "RIGHT_APPLICATION_DEVICES_WRITE",
        "RIGHT_APPLICATION_DEVICES_READ_KEYS",
        "RIGHT_APPLICATION_DEVICES_WRITE_KEYS",
        "RIGHT_APPLICATION_TRAFFIC_READ",
        "RIGHT_APPLICATION_TRAFFIC_UP_WRITE",
        "RIGHT_APPLICATION_TRAFFIC_DOWN_WRITE",
        "RIGHT_APPLICATION_LINK",
        "RIGHT_APPLICATION_ALL",
        "RIGHT_CLIENT_ALL",
        "RIGHT_CLIENT_INFO",
        "RIGHT_CLIENT_SETTINGS_BASIC",
        "RIGHT_CLIENT_SETTINGS_COLLABORATORS",
        "RIGHT_CLIENT_DELETE",
        "RIGHT_CLIENT_PURGE",
        "RIGHT_GATEWAY_INFO",
        "RIGHT_GATEWAY_SETTINGS_BASIC",
        "RIGHT_GATEWAY_SETTINGS_API_KEYS",
        "RIGHT_GATEWAY_SETTINGS_COLLABORATORS",
        "RIGHT_GATEWAY_DELETE",
        "RIGHT_GATEWAY_PURGE",
        "RIGHT_GATEWAY_TRAFFIC_READ",
        "RIGHT_GATEWAY_TRAFFIC_DOWN_WRITE",
        "RIGHT_GATEWAY_LINK",
        "RIGHT_GATEWAY_STATUS_READ",
        "RIGHT_GATEWAY_LOCATION_READ",
        "RIGHT_GATEWAY_WRITE_SECRETS",
        "RIGHT_GATEWAY_READ_SECRETS",
        "RIGHT_GATEWAY_ALL",
        "RIGHT_ORGANIZATION_INFO",
        "RIGHT_ORGANIZATION_SETTINGS_BASIC",
        "RIGHT_ORGANIZATION_SETTINGS_API_KEYS",
        "RIGHT_ORGANIZATION_SETTINGS_MEMBERS",
        "RIGHT_ORGANIZATION_DELETE",
        "RIGHT_ORGANIZATION_PURGE",
        "RIGHT_ORGANIZATION_APPLICATIONS_LIST",
        "RIGHT_ORGANIZATION_APPLICATIONS_CREATE",
        "RIGHT_ORGANIZATION_GATEWAYS_LIST",
        "RIGHT_ORGANIZATION_GATEWAYS_CREATE",
        "RIGHT_ORGANIZATION_CLIENTS_LIST",
        "RIGHT_ORGANIZATION_CLIENTS_CREATE",
        "RIGHT_ORGANIZATION_ADD_AS_COLLABORATOR",
        "RIGHT_ORGANIZATION_ALL",
        "RIGHT_SEND_INVITES",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_CREATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_INFO",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_LIST",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_PROFILE_DELETE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_CREATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_INFO",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_LIST",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_UPDATE",
        "RIGHT_ALERT_NOTIFICATION_RECEIVER_DELETE",
        "RIGHT_AUTHENTICATION_PROVIDER_CREATE",
        "RIGHT_AUTHENTICATION_PROVIDER_INFO",
        "RIGHT_AUTHENTICATION_PROVIDER_LIST",
        "RIGHT_AUTHENTICATION_PROVIDER_UPDATE",
        "RIGHT_AUTHENTICATION_PROVIDER_DELETE",
        "RIGHT_EXTERNAL_USER_CREATE",
        "RIGHT_EXTERNAL_USER_INFO",
        "RIGHT_EXTERNAL_USER_DELETE",
        "RIGHT_PACKET_BROKER_AGENT_READ",
        "RIGHT_PACKET_BROKER_AGENT_WRITE",
        "RIGHT_TENANT_CONFIGURATION_UPDATE",
        "RIGHT_LABEL_CREATE",
        "RIGHT_LABEL_INFO",
        "RIGHT_LABELS_LIST",
        "RIGHT_LABEL_UPDATE",
        "RIGHT_LABEL_DELETE",
        "RIGHT_LABEL_ASSIGN",
        "RIGHT_ALL"
      ],
      "type": "string"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

UserInvitationRegistry

Manage user invitations.

Expand Collapse

delete

/invitations

Delete (revoke) a user invitation.

Expand Collapse

Request Parameters
Field Type Required Description
email string
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

get

/invitations

List the invitations the caller has sent.

Expand Collapse

Request Parameters
Field Type Required Description
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "invitations": {
    "items": {
      "properties": {
        "accepted_at": {
          "format": "date-time",
          "type": "string"
        },
        "accepted_by": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "expires_at": {
          "format": "date-time",
          "type": "string"
        },
        "token": {
          "type": "string"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/invitations

Invite a user to join the network.

Expand Collapse

Request Parameters
Field Type Required Description
Request Body
Show JSON Schema
{
  "email": {
    "type": "string"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "accepted_at": {
    "format": "date-time",
    "type": "string"
  },
  "accepted_by": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      },
      "user_id": {
        "description": "This ID shares namespace with organization IDs.",
        "type": "string"
      }
    },
    "type": "object"
  },
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "email": {
    "type": "string"
  },
  "expires_at": {
    "format": "date-time",
    "type": "string"
  },
  "token": {
    "type": "string"
  },
  "updated_at": {
    "format": "date-time",
    "type": "string"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

UserSessionRegistry

Manage user sessions.

Expand Collapse

get

/users/{user_ids.user_id}/sessions

List the active sessions for the given user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
order string Order the results by this field path (must be present in the field mask). Default ordering is by ID. Prepend with a minus (-) to reverse the order.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "sessions": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "expires_at": {
          "format": "date-time",
          "type": "string"
        },
        "session_id": {
          "type": "string"
        },
        "session_secret": {
          "description": "The session secret is used to compose an authorization key and is never returned.",
          "type": "string"
        },
        "updated_at": {
          "format": "date-time",
          "type": "string"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/sessions/{session_id}

Delete (revoke) the given user session.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
session_id string true
user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

UserBookmarkRegistry

Expand Collapse

get

/users/{user_ids.user_id}/bookmarks

List the bookmarks for the given user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
limit integer Limit the number of results per page.
page integer Page number for pagination. 0 is interpreted as 1.
order string Order the results by this field path. Default ordering is by ID. Prepend with a minus (-) to reverse the order.
deleted boolean Only return recently deleted bookmarks.
entity_types array Specifies that only bookmarks that reference the given entity type should be returned. If empty the filter is not applied.
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "bookmarks": {
    "items": {
      "properties": {
        "created_at": {
          "format": "date-time",
          "type": "string"
        },
        "entity_ids": {
          "description": "EntityIdentifiers contains one of the possible entity identifiers.",
          "properties": {
            "application_ids": {
              "properties": {
                "application_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "client_ids": {
              "properties": {
                "client_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "device_ids": {
              "properties": {
                "application_ids": {
                  "properties": {
                    "application_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "dev_addr": {
                  "description": "The LoRaWAN DevAddr.",
                  "example": "2600ABCD",
                  "format": "string",
                  "type": "string"
                },
                "dev_eui": {
                  "description": "The LoRaWAN DevEUI.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "device_id": {
                  "type": "string"
                },
                "join_eui": {
                  "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "gateway_ids": {
              "properties": {
                "eui": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "example": "70B3D57ED000ABCD",
                  "format": "string",
                  "type": "string"
                },
                "gateway_id": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "organization_ids": {
              "properties": {
                "organization_id": {
                  "description": "This ID shares namespace with user IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "user_ids": {
              "properties": {
                "email": {
                  "description": "Secondary identifier, which can only be used in specific requests.",
                  "type": "string"
                },
                "user_id": {
                  "description": "This ID shares namespace with organization IDs.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "user_ids": {
          "properties": {
            "email": {
              "description": "Secondary identifier, which can only be used in specific requests.",
              "type": "string"
            },
            "user_id": {
              "description": "This ID shares namespace with organization IDs.",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "type": "array"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

post

/users/{user_ids.user_id}/bookmarks

Create a bookmark for the given user.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
Request Body
Show JSON Schema
{
  "entity_ids": {
    "description": "EntityIdentifiers contains one of the possible entity identifiers.",
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "client_ids": {
        "properties": {
          "client_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "device_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "gateway_ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "gateway_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "user_ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
Responses
Code Description Return Value
200 A successful response.
Show JSON Schema
        {
  "created_at": {
    "format": "date-time",
    "type": "string"
  },
  "entity_ids": {
    "description": "EntityIdentifiers contains one of the possible entity identifiers.",
    "properties": {
      "application_ids": {
        "properties": {
          "application_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "client_ids": {
        "properties": {
          "client_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "device_ids": {
        "properties": {
          "application_ids": {
            "properties": {
              "application_id": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "dev_addr": {
            "description": "The LoRaWAN DevAddr.",
            "example": "2600ABCD",
            "format": "string",
            "type": "string"
          },
          "dev_eui": {
            "description": "The LoRaWAN DevEUI.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "device_id": {
            "type": "string"
          },
          "join_eui": {
            "description": "The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          }
        },
        "type": "object"
      },
      "gateway_ids": {
        "properties": {
          "eui": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "example": "70B3D57ED000ABCD",
            "format": "string",
            "type": "string"
          },
          "gateway_id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "organization_ids": {
        "properties": {
          "organization_id": {
            "description": "This ID shares namespace with user IDs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user_ids": {
        "properties": {
          "email": {
            "description": "Secondary identifier, which can only be used in specific requests.",
            "type": "string"
          },
          "user_id": {
            "description": "This ID shares namespace with organization IDs.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "type": "object"
  },
  "user_ids": {
    "properties": {
      "email": {
        "description": "Secondary identifier, which can only be used in specific requests.",
        "type": "string"
      },
      "user_id": {
        "description": "This ID shares namespace with organization IDs.",
        "type": "string"
      }
    },
    "type": "object"
  }
}
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/bookmarks/applications/{entity_ids.application_ids.application_id}

Delete the given user’s bookmark.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
entity_ids.application_ids.application_id string true
user_ids.email string Secondary identifier, which can only be used in specific requests.
entity_ids.client_ids.client_id string
entity_ids.device_ids.device_id string
entity_ids.device_ids.dev_eui string The LoRaWAN DevEUI.
entity_ids.device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
entity_ids.device_ids.dev_addr string The LoRaWAN DevAddr.
entity_ids.gateway_ids.gateway_id string
entity_ids.gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
entity_ids.organization_ids.organization_id string This ID shares namespace with user IDs.
entity_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/bookmarks/applications/{entity_ids.device_ids.application_ids.application_id}/devices/{entity_ids.device_ids.device_id}

Delete the given user’s bookmark.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
entity_ids.device_ids.application_ids.application_id string true
entity_ids.device_ids.device_id string true
user_ids.email string Secondary identifier, which can only be used in specific requests.
entity_ids.client_ids.client_id string
entity_ids.device_ids.dev_eui string The LoRaWAN DevEUI.
entity_ids.device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
entity_ids.device_ids.dev_addr string The LoRaWAN DevAddr.
entity_ids.gateway_ids.gateway_id string
entity_ids.gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
entity_ids.organization_ids.organization_id string This ID shares namespace with user IDs.
entity_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/bookmarks/batch

Delete a list of bookmarks of the given user.

Expand Collapse

This operation is atomic; either all bookmarks are deleted or none. Bookmarks not found are skipped and no error is returned.

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/bookmarks/clients/{entity_ids.client_ids.client_id}

Delete the given user’s bookmark.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
entity_ids.client_ids.client_id string true
user_ids.email string Secondary identifier, which can only be used in specific requests.
entity_ids.application_ids.application_id string
entity_ids.device_ids.device_id string
entity_ids.device_ids.application_ids.application_id string
entity_ids.device_ids.dev_eui string The LoRaWAN DevEUI.
entity_ids.device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
entity_ids.device_ids.dev_addr string The LoRaWAN DevAddr.
entity_ids.gateway_ids.gateway_id string
entity_ids.gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
entity_ids.organization_ids.organization_id string This ID shares namespace with user IDs.
entity_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/bookmarks/gateways/{entity_ids.gateway_ids.gateway_id}

Delete the given user’s bookmark.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
entity_ids.gateway_ids.gateway_id string true
user_ids.email string Secondary identifier, which can only be used in specific requests.
entity_ids.application_ids.application_id string
entity_ids.client_ids.client_id string
entity_ids.device_ids.device_id string
entity_ids.device_ids.application_ids.application_id string
entity_ids.device_ids.dev_eui string The LoRaWAN DevEUI.
entity_ids.device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
entity_ids.device_ids.dev_addr string The LoRaWAN DevAddr.
entity_ids.gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
entity_ids.organization_ids.organization_id string This ID shares namespace with user IDs.
entity_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/bookmarks/organizations/{entity_ids.organization_ids.organization_id}

Delete the given user’s bookmark.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
entity_ids.organization_ids.organization_id string true This ID shares namespace with user IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
entity_ids.application_ids.application_id string
entity_ids.client_ids.client_id string
entity_ids.device_ids.device_id string
entity_ids.device_ids.application_ids.application_id string
entity_ids.device_ids.dev_eui string The LoRaWAN DevEUI.
entity_ids.device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
entity_ids.device_ids.dev_addr string The LoRaWAN DevAddr.
entity_ids.gateway_ids.gateway_id string
entity_ids.gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
entity_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}

delete

/users/{user_ids.user_id}/bookmarks/users/{entity_ids.user_ids.user_id}

Delete the given user’s bookmark.

Expand Collapse

Request Parameters
Field Type Required Description
user_ids.user_id string true This ID shares namespace with organization IDs.
entity_ids.user_ids.user_id string true This ID shares namespace with organization IDs.
user_ids.email string Secondary identifier, which can only be used in specific requests.
entity_ids.application_ids.application_id string
entity_ids.client_ids.client_id string
entity_ids.device_ids.device_id string
entity_ids.device_ids.application_ids.application_id string
entity_ids.device_ids.dev_eui string The LoRaWAN DevEUI.
entity_ids.device_ids.join_eui string The LoRaWAN JoinEUI (AppEUI until LoRaWAN 1.0.3 end devices).
entity_ids.device_ids.dev_addr string The LoRaWAN DevAddr.
entity_ids.gateway_ids.gateway_id string
entity_ids.gateway_ids.eui string Secondary identifier, which can only be used in specific requests.
entity_ids.organization_ids.organization_id string This ID shares namespace with user IDs.
entity_ids.user_ids.email string Secondary identifier, which can only be used in specific requests.
Responses
Code Description Return Value
200 A successful response. None
default An unexpected error response.
Show JSON Schema
        {
  "code": {
    "format": "int32",
    "type": "integer"
  },
  "details": {
    "items": {
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }",
      "properties": {
        "@type": {
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": "array"
  },
  "message": {
    "type": "string"
  }
}
Back to top
← HTTP(REST) Messages →

On this page

Sections

Getting Started

Concepts

The Things Stack Cloud

The Things Stack Enterprise

Integrations

API

Hardware

Sitemap

View our Sitemap

Contributing

GitHub

About Us

The Things Industries